#include <stdio.h>
#include <string.h>
#include <assert.h>
char* my_strstr(const char* p1,const char* p2)
{
char* s1=(char*) p1;//在操着时尽量避免使用p1和p2所以将p1和p2的值进行强制类型转换为(char*)类型重新赋值给s1和s2
char* s3=(char*) p1;
assert(p1!=NULL);//利用断言判断一下p1和p2是否为空指针
assert(p2!=NULL);
if(*((char*)p2)==0)//判断p2是否为0
return NULL;
if(strlen(p1)<strlen(p2))//当字符串的长度p1小于p2时,则直接返回空指针
{
return NULL;
}
while(*s3)
{
char* s2=(char*)p2;
while(*s1&&*s2&&*s1==*s2)//判断*s1,*s2内的字符是否相等,并且判断*s1和*s2是否为/0
{
s1++;//当s1和s2不为0且相等时,则进行判断下一项的s1和s2
s2++;
}
if(*s2!=0)//当*s2的内容为/0时则查找到子串
s1=++s3;
else//否则将s3+1后的指针赋值给s1,再进行查找
return s3;
}
return NULL;
}
int main()
{
char* arr1="abb";
char* arr2="bbcDEA";
char* ret=my_strstr(arr1,arr2);
if(ret==NULL)
printf("没找到\n");
else
printf("找到了 %s \n",ret);
return 0;
}