问题:写函数find(char *s1 , char *s2),函数find()查找串s中是否包含词word。约定串中的词由1个或1个以上空白符分隔。
代码:
#include <stdio.h>
int find(char *s1 , char *s2)
{
int flag=1,i=0,j=0;
for (;*s1!='\0';s1++)
{if(*s1==*s2)
{for(;*s2!='\0';s1++,s2++)
if (*s1!=*s2)
flag=0;}}
if (flag==1) return 1;
else return 0;
}
int main()
{
char s1[50],s2[50];
gets(s1);
gets(s2);
if (find(s1,s2)==1)
printf("Y");
else printf("N");
return 0;
}
想法就是先找到s1,s2头一个重复的字符,然后逐个比较至s2结束。用flag做标记。但是最后测试的时候只会输出Y不会输出N,不清楚是什么原因。求指教!
我觉得你的思路好像有问题,我举个例子,像acabb中找子串abb,按你的思路,第一个a相同,第二个是c不同,你的思路就直接判定为没有子串,但是我们知道子串是在后面的