这篇文章一般般,属于是心态崩了无数次之后的产物,谨慎阅读
目录
strstr函数的作用
strstr函数一共需要有两个参数,str1与str2
函数主要作用就是 在字符串str1中扫描 是否包含字符串str2
如果在str1中找到了str2,则返回str1中首次出现 str2的第一个元素 的指针地址
如果没有找到,则返回空指针NULL
库函数 补充:若传值的str2指针指向的字符串为空值,则返回指针str1
手搓strstr的思路


















实践手搓str
#include<stdio.h>
#include<assert.h>
char* my_strstr(const char* str1,const char* str2)
{
assert(str1 && str2);
const char* s1 = NULL;
const char* s2 = NULL;
const char* cp = str1;
if (*str2 == '\0')
{
return (char*)str1;
}
//当*cp指向了\0时,还未从循环中返回,则结束循环,返回空指针表示无
while (*cp)
{
s1 = cp;
s2 = str2;
//需要指针自增以进行对比,直到不同. s1/s2为空时代表函数到尽头了必须退出
while (s1 && s2 && (*s1 == *s2))
{
s1++;
s2++;
}
if (*s2 == '\0')
{
return (char*)cp;
}
cp++;
}
//没找到
return NULL;
}
int main()
{
char arr1[] = "abcdddddef";
char arr2[] = "de";
char* ret = my_strstr(arr1, arr2);
if (ret == NULL)
{
printf("没找到%s\n",ret);
}
else
{
printf("找到了%s\n", ret);
}
return 0;
}
文章介绍了strstr函数的作用,即在字符串中查找子字符串。作者提供了自己手动实现strstr函数的C语言代码,通过while循环和指针操作比较字符串,找到子字符串的起始位置。在找不到子字符串时返回NULL。最后,通过一个示例展示了如何使用这个自定义函数。





