当前位置:首页 » 《随便一记》 » 正文

字符串操作函数strstr

23 人参与  2023年04月01日 16:09  分类 : 《随便一记》  评论

点击全文阅读


目录

一、strstr函数介绍

 二、strstr函数的模拟

三、代码实现


一、strstr函数介绍

在编写程序的过程中,我们不可避免地会调用字符串操作函数,今天要介绍的字符串操作函数是strstr函数。

strstr函数声明:

char *strstr( const char *str1, const char *str2 );

strstr函数是在字符串str1中查找是否含有字符串str2,如果存在,返回str2在str1中第一次出现的地址;否则返回NULL。

实例:

#include<stdio.h>#include<string.h>//strstr函数的应用int main(){char arr1[] = "abbbcdef";char arr2[] = "bbc";printf("%s\n", strstr(arr1, arr2));return 0;}

运行结果:

 二、strstr函数的模拟

对strstr函数有了一定了解后,我们开始对strstr函数的模拟—my_strstr函数。

如下图所示,假设有两个字符串,指针str1, str2分别指向字符串首字母。

要在str1中查找str2并打印出来,先判断str1和str2指向的字符是否相等,此时有两种情况:第一种情况指向的字符不相等,str1要指向下一个字符,再判断,如此循环往复,当str1指向的是 '\0' 时,可以判断出str1中不存在str2,此时返回NULL;

第二种情况下指向的字符相等,那么不仅str1要向后读取字符,str2也要向后读取字符,再判断是否相等。

在向后读取字符的过程中,仍有两种情况:1.str1和str2指向的字符一直相等,直到str2指向'\0',这时可以知道str1中存在str2字符串,返回的是str1中的str2字串的第一个字符地址;

2.str1和str2指向的字符不全相等,例如下图中,*(str1+1) == *str2,*(str1+2) == *(str2+1),*(str1+3) != *(str2+2),此时指针str2就要返回到字符串str2首字符的地址,而指针str1需要返回到第一次和str2指向的字符相等的后一个位置,即字符串str1中第二个 'b' 的地址。然后又回到一开始的判断。

注:字符串名字也是字符串首字符地址。

使用strstr时,最终返回str1中第三个字符的地址,打印的是该地址后的字符串

 

三、代码实现

char* my_strstr(char* str1, char* str2){assert(str1 && str2);//断言,确保str1和str2不是空指针char* s1 = str1;char* s2 = str2;char* cur = str1;while (*cur){s1 = cur;s2 = str2;while (*s1 && *s2&& (*s1 == *s2)){s1++;s2++;}if (*s2 == '\0'){return cur;}cur++;}return NULL;}

 


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/57821.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 好看的秦依冉厉泽谦_秦依冉厉泽谦
  • 是图图的拥有牡丹命格的我嫁给五皇子,抛弃我的太子谢怀川,余思思,楼心月全书在线
  • 全文老婆成***后,王牌拆弹专家(张凯,张振华,林蕴)列表_全文老婆成***后,王牌拆弹专家
  • 逼我下乡?我闪婚嫁军官带娃暴富苏冉冉刘翠芬周牧深完本_逼我下乡?我闪婚嫁军官带娃暴富(苏冉冉刘翠芬周牧深)
  • 童养夫为了白月光想虐我?没关系我还有九个(崔清乐顾北寒)_童养夫为了白月光想虐我?没关系我还有九个(崔清乐顾北寒)
  • 代管班费小荷包三年后,青梅说我吞了180万(乔宇宁雨)全书免费_(乔宇宁雨)代管班费小荷包三年后,青梅说我吞了180万后续(乔宇宁雨)
  • 男友一家要我守规矩后,却悔疯了苏然完本_男友一家要我守规矩后,却悔疯了(苏然)
  • 重生打脸渣男毒闺蜜(陈亮张倩)全书免费_(陈亮张倩)重生打脸渣男毒闺蜜后续(陈亮张倩)
  • 全文和宗门断情绝义后,小可怜被大佬团宠了创作编写(江寻柳青青)列表_全文和宗门断情绝义后,小可怜被大佬团宠了创作编写
  • 和宗门断情绝义后,小可怜被大佬团宠了创作编写江寻柳青青完本_和宗门断情绝义后,小可怜被大佬团宠了创作编写(江寻柳青青)
  • 向导坐牢后,结果把狱友驯成忠犬桑虞陆擢完本_向导坐牢后,结果把狱友驯成忠犬(桑虞陆擢)
  • 姑姑爱开玩笑,藏我的录取通知书夏知妤_姑姑爱开玩笑,藏我的录取通知书夏知妤

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1