题目描述:
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; }