|

楼主 |
发表于 2020-6-29 11:45:01
|
显示全部楼层
#include<iostream.h>
#include<string.h>
//#define MAXSTRLEN 255
//typedef char string[MAXSTRLEN+1];
//using namespace std;
int find(char *str1,char *str2)
//S为主串,T为子串
{
int index=1;
char *p,*m,*q,*n;
char *Sstart,*Send,*Tstart,*Tend;
Sstart=str1;
Tstart=str2;
Send=Sstart+strlen(str2)-1;
Tend=Tstart+strlen(str2)-1;
p=Sstart;
m=Tstart;
q=p+strlen(str2)-1;
n=q+strlen(str2)-1;
if(strlen(str1)<strlen(str2))
{
cout<<"子串比主串长不能进行匹配!"<<endl;
return -1;
}//if
else
{
while(q<=str1+strlen(str1))
{
if(*p==*m&&*q==*n)
{
p++;q--;
m++;n--;
if(p=q)
{ cout<<"匹配成功"<<endl<<"从主串第"<<index<<"个字符开始匹配"<<endl;break;}
}
else
{ index++;
Sstart++;Send++;
if(Send>str1+strlen(str1)-1)
{ cout<<"匹配不成功!";
break;
}
else
{
p=Sstart;q=Send;
m=Tstart;
n=Tend;
}
// cout<<"匹配成功!"<<endl<<"从主串第"<<index<<"个字符开始匹配!"<<endl;
}
}//while
}//else
return 1;
}
void main()
{
char str1[255],str2[255];
cout<<"请输入主串:";
cin>>str1;
cout<<endl;
cout<<"请输入子串:";
cin>>str2;
cout<<endl;
find(str1,str2);
}
// cout<<find(str1,str2)<<endl;
还是只能靠自己啊 |
|