模拟实现strstr函数
创始人
2024-06-02 00:11:06
0

目录

strstr函数介绍:

使用strstr:

出现:

 未出现:

我的strstr模拟实现:

代码:

代码逻辑:

现在来讲一下比较迷惑的点:

结语:


strstr函数介绍:

    在C语言的库函数里面有一个函数叫做strstr(),这个函数的作用是在一个字符串中判断是否存在某一个字符串。

Cplusplus网站上对strstr函数的介绍是这样的:

 这段解释提供了几个比较关键的信息:

1.这个函数的返回类型是char*

2.如果在str1里面存在str2那就返回str2中的第一个字符的地址。

3.如果在str1中不存在str2那就返回一个NULL.

4.还有就是实现这个函数的模板。

使用strstr:

出现:

 未出现:

我的strstr模拟实现:

代码:

char* my_strstr(const char* str1,const char* str2){char* s1 = (char*)str1;char* s2 = (char*)str2;char* cp = str1;while (*cp) {s1 = cp;s2 = (char*)str2;while(*s1 && *s2 && *s1 == *s2) {s1++;s2++;}if (*s2 == '\0') {return cp;}cp++;}return NULL;
}

代码逻辑:

1.先定义三个指针变量指向str1,str2,str1。cp指针有标记的作用(标记s1的下一个元素)。

2.进入到循环中,循环条件是*cp不等于’\0'

3.在第一次循环未能成功找出时并且*cp不等于'\0'时,将cp的地址赋值给s1(此时s1指向了下一个元素,以下一个元素为起点进行寻找);s2的地址重新指向str2(字符串str2的首地址)

4.第二个while循环内的循环条件是s1与s2指向的元素相等且两者指向的元素都不是'\0'。如果这个循环结束那就有三种可能性:

1.s1与s2指向的内容不相等

2.*s1=='\0' 与*s2都等于’\0'

3.*s1与*s2中有一个等于'\0'

5.使用if进行判断,如果在第二个while循环结束以后*s2指向的是'\0'那就是找到了。如果不是那就调整s1指向cp所指向的元素,s2重新指向首元素,再次进行寻找。

6.大循环结束了还没找到的话那就返回NULL.

到这里,我就把我实现my_strstr函数的逻辑讲清楚了。

现在来讲一下比较迷惑的点:

char* my_strstr(const char* str1,const char* str2)
char* s1 = (char*)str1;
char* s2 = (char*)str2;

不知各位看官是否有注意到这里进行了两次强制转换,这里的原因在于str1与str2的前面有一个const修饰符对str1与str2进行限定,所以str1与str2的是比较安全的。当你把char*型的s1与s2指向str1与str2时就相当于用一个没有那么安全的指针指向了一个比较安全的指针,编译器(VS2019)就会报警告,所以为了不报警告我就把str1与str2强制类型转换为char*型。

结语:

好了,今天的分享就到这里了。感谢你的阅读,如果你心情好的话给小牛儿来个三连啊,哈哈哈。

相关内容

热门资讯

​推进学前教育和托育服务协调可... 来源:法治日报 法治日报全媒体记者 赵晨熙 近日,国家卫生健康委等七部门发布《关于加快推进普惠托育服...
又到港交所铜锣不够用?蓝思科技... 财联社7月9日讯(记者 赵昕睿)港股IPO市场热度持续升温。7月9日,由中信证券独家保荐的蓝思科技于...
合适的小本投资创业好项目 合适...   :乡镇开设中药店城市人嫌麻烦而远离中药,农村中药市场却大有潜力可挖,乡镇现有中药店铺远不能满足需...
*ST建艺副总经理高志强因个人... 7月9日,*ST建艺(维权)(002789)发布公告,董事、副总经理兼财务负责人高志强因个人原因辞职...
想小本创业有什么小项目 想小本... 临近新的一年,没有完成自己目标的朋友有哪些适合一个人做的小本生意呢?总结了几个适合小本创业的项目,希...
第十次全国对口支援新疆工作会议... 据新华社新疆和田7月9日电 第十次全国对口支援新疆工作会议7日至9日在新疆和田召开。中共中央政治局常...
小本创业项目有哪些? 小本创业... 小本创业项目主要有分几类。1、实业类:这一类前期投入比较大,可长期做,而且国家现在对这一块也是有很大...
2019小本创业有哪些好项目 ... 2019小本创业项目有哪些呢?创业和打工不一样,打工只要做好老板吩咐下来的工作就好,创业的话,你就要...
在家小本创业做什么好 小成本创... 生活不易,压力大,每年新增待业人数数额一直呈递增状态,工作也不好找,更不用提找到心仪的工作了,因此小...
新股孖展统计 | 7月9日 首钢朗泽(02553)正在招股中。截止7月9日,富途、辉立、耀才等券商合计为首钢朗泽借出6.6356...