count(char *str,char *substr)
{
int x,y,z;
int num=0;
for(x=0;str[x]!=’\n’;x++)
for(y=x,z=0;substr[z]==str[y];z++,y++)
if(substr[z]==NULL)
{num++; break; };
}
1.字符结束符是\0,不是\n,\n是回车符
2.如果substr在str的中间部分,for循环中使用substr[z]==str[y]作为条件的时候,当substr到了末尾的时候,是不会进入for循环的。
代码修改如下:
int count(char *str,char *substr)
{
int x,y,z;
int num=0;
for(x=0;str[x] != '\0';x++)
{
for(y=x,z=0; substr[z] != '\0'&& substr[z]==str[y];y++,z++); //注意这里的分号
if(substr[z] == '\0')
num++;
}
return num;
}
str[x]!=’\0’
'\n'是换行符,'\0'才是字符串结束符
另外,内层循环应该判断str[y]不是字符串结束符,否则就进行越界判断了
count(char *str,char *substr)
{
int x,y,z;
int num=0;
for(x=0;str[x]!=’\0’; x++)
for(y=x,z=0;str[y] != '\0' && substr[z]==str[y];z++,y++)
if(substr[z]=='\0')
{num++; break; };
}
count(char *str,char *substr)
{
int x,y,z;
int num=0;
for(x=0;str[x]!='\0';x++)
for(y=x,z=0;substr[z]==str[y];z++,y++)
if(substr[z]=='\0')
{
num++; break;
};
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!