题目描述:
2.
编写函数,求字符串s中是否存在子串sub,存在,则返回第一个sub在s中的起始位置,不存在则返回-1。例如:s=”abcdabefgabefa”,sub=”abe”,则函数应返回5。
#include<stdio.h>
#include<string.h>
int cnt=0;
int index(char s[], char sub[])
{
int i=0;
int j=0;
while(i<strlen(s))
{
if(s[i]==sub[j]) //单个字符相等的话 i和j 都向后搜索
{
i++;
j++;
}
else //有字符不匹配的话 模式串j再从0开始, i从上一次的下一个位置开始
{
i=i-j+1;
j=0;
}
if(j==strlen(sub))
{
cnt++;
return i-strlen(sub)+1;
}
}
return -1;
}
int main()
{
char s[20],sub[10];
gets(s);
gets(sub);
// puts(s);
// puts(sub);
printf("%d\n",cnt);
printf("%d\n",index(s,sub));
return 0;
}