strstr的作用是在字符串s1里面查找是否有字符串s2
模拟实现
str函数的模拟实现相对来说比较复杂
最重要的就是遇到多个字符相同而最后不同的情况
//5.strstr 判断str1里面有没有str2
//如果有,返回str1里str2的起始地址
//如果str1不包含str2,返回null
char* my_strstr(const char* str1, const char* str2)
{
const char* s1 = str1;
const char* s2 = str2;
const char* cur = str1;
assert(str1 && str2);
if (*str2 == '\0')
{
return (char*)str1;
}
while (*cur)
{
s1 = cur;
s2 = str2;
while (*s1 && *s2 && *s1 == *s2)
{
s1++;
s2++;
}
if (*s2 == '\0')
return (char*)cur;
cur++;
}
return NULL;
}
int main()
{
char arr1[15] = { "helloworld" };
char arr2[] = { "owo" };
char* p=strstr(arr1, arr2);
if (p == NULL)
{
printf("找不到\n");
}
else
{
printf("%s\n", p);
}
return 0;
}
如果对你有帮助,还请点个采纳,万分感谢!
cp
是指向字符串str1
当前字符的位置,然后while
循环里面比较从cp
开始的字符串和字符串str2
,如果str2
匹配到字符串结尾,说明在str1
中找到了子串,则返回cp
,否则cp
移到下一个字符,重新比较字符串。strstr()
函数返回的是str2
在str1
第一次出现的首地址或NULL