文章参考过网上的内容,如有侵权,请联系
#include<stdio.h>#include<stdlib.h>typedefstruct{chardata[100];//初始化串intlen;//串长}SqString;voidDispStr(SqString s){inti;if(s.len>0){for(i=0;i<s.len;i++)printf("%c",s.data[i]);printf("\n");}}voidStrAssign(SqString&str,charcstr[]){//生成一个其值等于串常亮cstr的串Tinti;for(i=0;cstr[i]!='\0';i++)str.data[i]=cstr[i];str.len=i;}SqStringSubString(SqString&Sub,SqString S,intpos,intlen1){//用Sub返回串S的第pos个字符起长度为len的子串if(pos<0||pos>S.len||len1<0||len1>S.len-pos+1){printf("ERROR");}inti=0,j=pos;while(len1--){Sub.data[i]=S.data[j];Sub.len=i+1;i++;j++;}returnSub;}intStrCompare(SqString S,SqString T){//若S>t,则返回值>0;若S=t,则返回值=0;若S<t,则返回值<0;for(inti=0;i<S.len;i++){if(S.data[i]!=T.data[i])return1;}return0;}intIndexStr(SqString S,SqString T){//t为非空串。若主串S中存在于T相等的子串//则返回第一个这样的子串的在S中的位置,否则返回0intn=S.len;intm=T.len,i=0;SqString Sub;while(i<=n-m+1){SubString(Sub,S,i,m);if(StrCompare(Sub,T)!=0)++i;elsereturni;}//if(i>0) return i; //返回子串在主串中的位置//else return 0; //S中不存在与T相等的子串}intmain(){SqString S,T,Sub1;printf("建立串S\n");StrAssign(S,"abcdefgh");printf("建立串T\n");StrAssign(T,"defg");printf("输出串S\n");DispStr(S);printf("输出串T\n");DispStr(T);printf("串S中子串T的位置\n");printf("%d",IndexStr(S,T)+1);return0;}