子串的定位操作通常被称做串的模式匹配。
#include<iostream>
using namespace std;
/*返回子串t在主串s第pos个位置之后的位置,若不存在,返回-1*/
int Index(char *s,char *t,int pos)
{
int len_s = strlen(s);
int len_t = strlen(t);
int i = pos;//i指示主串的下标,从pos位置(和下标一致,从0开始)开始匹配
int j=0;
while(i<len_s && j<len_t)
{
if(s[i] == t[j])
{
i++;
j++;
}
else
{
i = i-j+1;
j = 0;
}
}
if(j==len_t)
return i-len_t;
else
return -1;
}
int main()
{
cout<<"请输入两个字符串:"<<endl;
char s[100];
char t[100];
cin>>s;
cin>>t;
cout<<"t[]在s[]的下标为"<<Index(s,t,0)<<"处开始匹配"<<endl;
system("pause");
return 0;
}
结果: