代码
#include <iostream>
using namespace std;
int ArrIndex[100];
typedef struct
{
char data[50];
int length;
}SqString;
void StrAssign(SqString &s,char cstr[])
{
int i;
for(i=0;cstr[i]!='\0';i++)
{
s.data[i]=cstr[i];
}
s.length=i;
}
void DispStr(SqString s)
{
int i;
if(s.length>0)
{
for(i=0;i<s.length;i++)
{
cout<<s.data[i];
}
cout<<endl;
}
}
int indexmod(SqString s,SqString t)
{
int i=0,j=0,n=0;
while(i<s.length)
{
if(s.data[i]==t.data[j])
{
i++;
j++;
if(j>=t.length)
{
ArrIndex[n]=i-1;
n++;
}
}
else
{
i=i-j+1;
j=0;
}
}
return n;
}
void DispIndex(int n)
{
cout<<"位置是:";
for(int i=0;i<n;i++)
{
cout<<ArrIndex[i];
if(i+1!=n)
{
cout<<",";
}
}
cout<<endl;
}
int main()
{
SqString S,T;
char s[]="abcdeab";
char t[]="ab";
StrAssign(S,s);
StrAssign(T,t);
cout<<"主串为s:";
DispStr(S);
cout<<endl<<"模式串为t:";
DispStr(T);
cout <<endl<<"串T在S中共出现"<<indexmod(S,T)<<"次";
DispIndex(indexmod(S,T));
return 0;
}
运行结果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/25a148591b9a0d180840f2695afd2988.png)