该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
int main()
{
char input1[100],input2[100];
printf("\n请输入字符串1:\n");
gets(input1);
printf("\n请输入字符串2:\n");
gets(input2);
/*开始查找,声明变量i,j,index*/
int i=0,j,index=0,counter=0,flag=1;
while(i
{
if(input1[i]==input2[0])
{
index = i;
flag = 0;
for(j=0;j
{
if(input1[index+j+1]==input2[j+1])/*潜在错误点1*/
{
counter++;
if(counter==strlen(input2)-1)
{
printf("\n在字符串1中找到了字符串2:"
"\n索引是: %d\n",index);
}else continue;
}else {i=index+1;break;}
}
}
i++;
}
if(flag){printf("\n没有找到\n");}
system("pause");
return 0;
}
这是源代码,基本思想是:不用指针,当然用也可以;
先找到字符数组B的首字母在A中的索引,如果不存在,程序结束,反之,标记为index,从A[INDEX+J]开始跟B[J]一一对比,如果第一个字符匹配但后面的任意一个B长度-1范围内的后续字符不匹配,则跳出内层循环继续寻找下一个跟B[0]匹配的A[INDEX],然后继续,有点递归的思想。。。
我想提的问题是:打印的结果,还可能出现这样的情况:B在A中出现了2次或者更多,那么要求循环继续打印出后面出现的索引。。求高手改进代码