#include<stdio.h>
#include<assert.h>
char* my_strstr(const char* p1,const char* p2)
{
assert(p1 && p2);//检查p1和p2是否为空指针
//创建s1,s2来在p1,p2中进行移动,创建指针tmp来保存开始移动时的s1的位置
char* s1=NULL;
char* s2=NULL;
char* tmp=(char*)p1;
//对p1字符串进行判断是否为空字符
if (!*p1)
{
return (char*)p1;
}
//进行查找循环
while (*tmp)
{
s1 = (char*)tmp;
s2 = (char*)p2;
//开始查找循环
while (*s1&&*s2&&(*s1==*s2))
{
s1++;
s2++;
}
//判断查找循环停止的原因
if (!*s2)
{
return tmp;
}
tmp++;
}
return NULL;
}
int main(void)
{
const char* p1 = {"abbcdefg"};
const char* p2 = { "bcde" };
char* k = my_strstr(p1, p2);
//对my_strtsr函数中所传回的值进行判断
if (k == NULL)
{
printf("不存在\n");
}
else
printf("%s\n", k);
return 0;
}
标签:p2,tmp,p1,strstr,--,s2,s1,char,库函数
From: https://blog.51cto.com/u_16285400/8464793