学习了一下strstr函数
下面是其中一种实现方法,由int传回位置,相较于指针传回地址更方便理解一些
#include<bits/stdc++.h>
using namespace std;
char s1[500],s2[500];
int find(char *s1,char *s2)
{
char *str1,*str2,*p;
str1=s1; //指向第一个位置
if(!*s2) //空字串不需要找
return 0;
while(*str1!='\0')
{
str2=s2;//每次都初始化
while(*str2 && (*str2 != *str1))
{
if(*++str1=='\0')//遍历完了都没找到
return -1;
}
p=str1;
while(*str2 && *str2 == *str1 )//首字母相等开始找
{
//逐位比对
str1++;
str2++;
}
if(*str2=='\0')//找到了
return p-s1;
str1=p+1;//没找到就挪下一位
}
return -1;
}
int main()
{
cin>>s1;
cin>>s2;
int pos=find(s1,s2);//找位置
if(pos==-1) cout<<"Not Found";
else
for(int i=0;i<pos;i++)
cout<<s1[i];
}