模拟实现的代码:
char* my_strstr(char* p1, char* p2)
{
char* start=p1;//记录被查找字符串的首地址
char* begin = p2;//记录要查找字符串的首地址
while (1)
{
while (*p1 != *p2)//首元素不相同,p1向后移动一位
{
p1++;
}
start = p1;//找到了首元素相同的地址,用start记录
while (*p1 == *p2)//对比接下来的字符
{
p1++;
p2++;
if (*p2 == '\0')//如果p2结束了,说明查找成功
return start; //返回 记录的开始相同的地址
}
p1 = start+1;//如果接下来的不相同,p1要从start的下一位开始,重复以上相同步骤
p2 = begin;//p2要回到首地址
if (*p1 == '\0')//如果p1结束了,到了'\0',说明查找失败,返回NULL
return NULL;
}
}
int main()
{
char arr1[] = "bcbabcbfg";
char arr2[] = "abb";
char* ret = my_strstr(arr1, arr2);
printf("%s", ret);
return 0;
}