欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > C语言 ——— 学习、使用 strstr函数 并模拟实现

C语言 ——— 学习、使用 strstr函数 并模拟实现

2024/10/25 10:20:46 来源:https://blog.csdn.net/weixin_55341642/article/details/140895279  浏览:    关键词:C语言 ——— 学习、使用 strstr函数 并模拟实现

目录

strstr函数的功能

学习strstr函数​编辑

使用strstr函数 

模拟实现strstr函数 


strstr函数的功能

在字符串 str1 中找 str2 字符串,如果在 str1 字符串中找到了 str2 字符串,就返回 str1 中找到的 dtr2 的地址,没找到的话就返回 NULL 

举例说明:

字符串str1:"abcdefabcdef"

字符串str2:"fabc"

返回值以 %s 的形式打印:"fabcdef"

字符串str1:"abcdefabcdef"

字符串str2:"cbaf"

返回值以 %s 的形式打印:NULL


学习strstr函数

strstr函数的参数:

char* 类型的指针 str1 和 str2 ,所以需要传递的形参是两个字符串的首地址,并且只会在 str1 字符串中找 str2 字符串,并不会改变数据,所以可用 const 关键字修饰

strstr函数的返回值: 

 在 str1 字符串中找到了 str2 字符串时,返回 str1 字符串开始找到 str2字符串的首地址

没找到时,返回 NULL


使用strstr函数 

str1 字符串中找到 str2 字符串时:

str1 字符串中没找到 str2 字符串时:

模拟实现strstr函数 

const char* my_strstr(const char* str1, const char* str2)
{// 断言assert(str1 != NULL);assert(str2 != NULL);// 记录开始匹配的位置char* cp = str1;// 创建两个变动指针char* s1 = str1;char* s2 = str2;while (*s1 != NULL){// 当 s1 和 s2 匹配不成功时,s1 重新赋值为 cp 最开始匹配的下一个位置s1 = cp;// 当 s1 和 s2 匹配不成功时,s2 重新赋值为 str2 字符串的起始位置s2 = str2;// 开始匹配while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2){s1++;s2++;}// 匹配完时,当 s2 指向了 '\0' ,则说明匹配成功,返回匹配的记录位置if (*s2 == '\0')return cp;cp++;}// 当 str1 字符串都指向了 '\0' 时,表示 str1 字符串中没有 str2 字符串,返回 NULL return NULL;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com