问题描述
- 我的代码虽然写得很业余,但是没报错的情况下为什么连printf都执行不了。
-
要求从一个字符串里搜寻另一个字符出现的次数。下面是小白的代码。
#includeint main(int argc, const char * argv[]) {
char hah[120],haha[120];
int i,j,num=0;
printf("sting1 is ");
gets(hah);
printf("%sn",hah);
printf("string2 is ");
gets(haha);
printf("%sn",haha);
printf("ooocoo"); //你到底去哪儿了呢?
for (i=0; hah[i]!='';) {
for (j=0; haha[j]!=''; ) {
if (haha[j]==hah[i]) {
i++;
j++;
}
}num++;
}
printf("n%d",num);
return 0;
}
第一次运行结果貌似还是对的。
warning: this program uses gets(), which is unsafe.
sting1 is rr
rr
string2 is r
r
ooocoo
2Program ended with exit code: 0
第二次运行结果就这样了:
warning: this program uses gets(), which is unsafe.
sting1 is wakakaka,wsmlaoshi wakakakaka,jiushi buduine
wakakaka,wsmlaoshi wakakakaka,jiushi buduine
string2 is ka
ka
就到输出第二个字符串为止,就连oocooo都不给我输出,这不是摆明欺负菜鸟么,求大神解释。
本来oocooo后面那些代码我另外弄了个函数表示搜寻查找,我以为是调用函数原因,哪知道代码全扔进主函数里它还是不行。暂时不需要其他的思路解决原题目,我只是想知道我这一段东西错在哪儿了。
解决方案
char hah[120],haha[120];
先初始化一下:memset(hah,0,120);
memset(haha,0,120);