模拟实现的代码:
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',说明查找失败,返回NULLreturn NULL;}
}int main()
{char arr1[] = "bcbabcbfg";char arr2[] = "abb";char* ret = my_strstr(arr1, arr2);printf("%s", ret);return 0;
}