/* * 在父串中寻找子串首次出现的位置(实现类似于java中的indexof()方法) * str1="cbcdabcf" * str2="bcf" */ #include<stdio.h> #include<stdlib.h> #include<string.h> /* * str1:父串 * str2:子串 */ int indexof(char *str1,char *str2) { char *s1=str1; char *s2=str2; int n1=strlen(s1); int n2=strlen(s2); int i=0; int j=0; while(i<n1&&j<n2) { //存在比较的意义 if(*(s1+i)==*(s2+j)) { int ii=i+1; int jj=j+1; while(ii<n1&&jj<n2) { if(*(s1+ii)==*(s2+jj)) { ii++; jj++; } else { break; } } //全部比较完成 if(jj==n2)return ii-n2; i++; } //不存在比较的意义 else { i++; } } return -1; } int main() { char *s1="cbcdabcf"; char *s2="bcf"; int loc=indexof(s1,s2); printf("子串在父串首次出现的位置:%d\n",loc); return 0; }