录入两个字符串,一个字符串是另一个字符串的字串,输出子串首字母在长字符串的位置。

两个解决办法

使用库函数strncmp(str1,str2,n);

功能:比较str1和str2两个字符串的前n个字母,一一比较,若str1大则返回1,若str1和str2相等,则返回0,否则返回-1;

intcompare(char*str1,char*str2){inti;intlenstr1=strlen(str1);intlenstr2=strlen(str2);if(lenstr1<lenstr2)return-1;//录入str2为短字符串for(i=0;i<=lenstr1-lenstr2;i++)//控制比较的次数{if(strncmp(str1+i,str2,lenstr2)==0)//每次将长的字符串比较的首字母前移一个//比较的长度为短的字符串returni;//返回首字母下标}return-1;}第二种方法,用for语句voidmain(){charstr1[100];charstr2[100];inti,j,k;intshortstr,longstr,flag;gets(str1);gets(str2);shortstr=strlen(str2);longstr=strlen(str1);for(i=0;i<=longstr-shortstr;i++)//控制比较的次数{k=i;//k是长字符串的比较首字母下标for(j=0;j<shortstr;j++)//每次都要依次比较短的字符串和长字符串中短字符串的个数{if(str2[j]==str1[k])flag++;k++;}if(flag==shortstr)printf("%d\n",i);elseflag=0;}}