C++中strstr函数的实现方法总结

2025-05-27 0 20

C++strstr函数的实现方法总结

函数说明:

包含文件:string.h

函数名: strstr

函数原型:extern char *strstr(char *str1, char *str2);

功能:从字符串str1中查找是否有字符串str2, 如果有,从str1中的str2位置起,返回str1的指针,如果没有,返回null。

返回值:返回该位置的指针,如找不到,返回空指针。

方法一:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41
#include <iostream>

#include <assert.h>

using namespace std;

char* My_strstr(char *src,char *substr)

{

assert(src != NULL && substr != NULL);

unsigned int size = strlen(src);

for(int i = 0; i < size; ++i,++src)

{

char *p = src;

for(char *q = substr;;p++,q++)

{

if(*q == '\\0') //在src中找到连续的substr子串停止并返回

{

return src;

}

if(*q != *p)

{

break;

}

}

}

return NULL;

}

int main()

{

char *res = My_strstr("abcdefg","cde");

if(res != NULL)

{

cout<<"exist:"<<res<<endl;

}

else

{

cout<<"no exist!"<<endl;

}

return 0;

}

方法二:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36
#include <iostream>

#include <assert.h>

using namespace std;

char* My_strstr(const char* s1,const char* s2)

{

int n;

if(*s2)

{

while(*s1)

{

for(n=0;*(s1+n)==*(s2+n);n++)

{

if(!*(s2+n+1))

return (char*)s1;

}

s1++;

}

return NULL;

}

else

return (char*)s1;

}

int main()

{

char *res = My_strstr("abcdefg","cde");

if(res != NULL)

{

cout<<"exist:"<<res<<endl;

}

else

{

cout<<"no exist!"<<endl;

}

return 0;

}

方法三:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29
#include <iostream>

#include <assert.h>

using namespace std;

char* My_strstr(const char* s1,const char* s2)

{

const char *p=s1;

const size_t len=strlen(s2);

for(;(p=strchr(p,*s2))!=0;p++)// strchr查找字符串s中首次出现字符c的位置

{

if(strncmp(p,s2,len)==0)

{

return(char*)p;

}

}

return(0);

}

int main()

{

char *res = My_strstr("abcdefg","cde");

if(res != NULL)

{

cout<<"exist:"<<res<<endl;

}

else

{

cout<<"no exist!"<<endl;

}

return 0;

}

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 C++中strstr函数的实现方法总结 https://www.kuaiidc.com/73268.html

相关文章

发表评论
暂无评论