字符串函数__strstr

简介: str1和str2字符串中一定要有'\0',不然不能正确从字符串查到子串

一.strstr()的简介

它用于找到子串(str2)在一个字符串(str1)中第一次出现的位置,引用头文件#include<string.h>

strstr()函数的声明:

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

str1:字符串的首地址

str2:子串的首地址

返回类型为字符指针类型,在str1中找str2,如果找到,返回str1字符串的起始位置,如果找不到,返回空指针

二.注意事项

1.str1和str2字符串中一定要有'\0',不然不能正确从字符串查到子串,例如

1. #include<stdio.h>
2. #include<string.h>
3. int main()
4. {
5. char arr[]={'a','b','c','d','e','f'};    
6. char brr[]={'b','c','d','e'};
7. char* ret=strstr(arr,brr);
8. printf("%s\n",ret);
9. return 0;
10. }

结果:

31F37F51-8C40-446E-A454-85FBE4A6EF91.jpeg

应加上'\0'

1. #include<stdio.h>
2. #include<string.h>
3. int main()
4. {
5. //char arr[]="abcdef";
6. char arr[]={'a','b','c','d','e','f','\0'};
7. //    char brr[]="bcde";
8. char brr[]={'b','c','d','e','\0'};
9. char* ret=strstr(arr,brr);
10. printf("%s\n",ret);
11. return 0;
12. }

运行结果:

91A2B85D-D7F5-449F-9AE6-5AE2883C7FF2.jpeg

三.模拟实现strstr

1. #include<stdio.h>
2. #include<string.h>
3. #include<assert.h>
4. char* my_strstr(const char* str1,const char* str2)
5. {
6. assert(*str1&&*str2);//防止指针为空
7. char* s1=NULL;
8. char* s2=NULL;
9. char* cp=str1;
10. while(*cp)
11.     {
12.         s1=cp;
13.         s2=str2;
14. while(*s1&&*s2&&(*s1==*s2))
15.         {
16.             s1++;
17.             s2++;
18.         }
19. if(*s2=='\0')
20.         {
21. return cp;
22.         }
23.         cp++;
24.     }
25. return NULL;
26. }
27. int main()
28. {
29. char arr[]="abcdef";
30. char brr[]="bcde";
31. char* ret=my_strstr(arr,brr);
32. printf("%s\n",ret);
33. return 0;
34. }

运行结果:

DC7FFAAA-D90F-45B5-9571-71BDE657332C.jpeg

 



相关文章
|
6月前
|
C语言
字符串函数`strlen`、`strcpy`、`strcmp`、`strstr`、`strcat`的使用以及模拟实现
字符串函数`strlen`、`strcpy`、`strcmp`、`strstr`、`strcat`的使用以及模拟实现
|
21天前
解析与模拟常用字符串函数strcpy,strcat,strcmp,strstr(一)
解析与模拟常用字符串函数strcpy,strcat,strcmp,strstr(一)
19 0
|
6月前
|
C语言
C语言:字符函数和字符串函数(strlen strcat strcmp strncmp等函数和模拟实现)
C语言:字符函数和字符串函数(strlen strcat strcmp strncmp等函数和模拟实现)
|
6月前
|
C语言
深入理解字符串函数和字符函数(islower和isupper、tolower和toupper、strlen、strcpy、strcat、strcmp)(一)
深入理解字符串函数和字符函数(islower和isupper、tolower和toupper、strlen、strcpy、strcat、strcmp)(一)
|
6月前
|
C语言
深入理解字符串函数(strstr、strtok、strerror)(二)
深入理解字符串函数(strstr、strtok、strerror)(二)
|
编译器 Linux C语言
【C语言】字符串函数的介绍二( strcmp、strncpy、strncat、strncmp)
【C语言】字符串函数的介绍二( strcmp、strncpy、strncat、strncmp)
117 0
|
存储 算法 编译器
【C语言】字符串函数介绍三(strstr、strtok、streeror)
【C语言】字符串函数介绍三(strstr、strtok、streeror)
115 0
|
算法 C语言
你应该知道的C语言干货(4)(strncpy,strncmp,strncat,strstr,strtok)
该库函数作用和strcpy很相似,不同点在于
70 0
你应该知道的C语言干货(4)(strncpy,strncmp,strncat,strstr,strtok)
字符串函数strncmp
字符串函数strncmp
122 1
字符串函数__strcat()
注意事项 1.目标空间必须要有要追加的空间的空间才能够追加成功,就是说目标空间arr剩余的空间能够容下追加空间brr的字符串 2.追加的空间必须要有'\0',srcat()是遇到‘\0’才停止追加,如果没有'\0',就一直追加,导致追加失败 3.是不能给自己追加,就是追加空间是arr,目标空间也是arr