1. 解释
(1)函数原型:
char *strstr(const char *str1, const char *str2)
(2) 头文件:
#include
(3) 返回:
返回字符串str中第一次出现子串substr的地址;如果没有检索到子串,则返回NULL。
(4) 作用:
找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。返回该位置的指针,如找不到,返回空指针。
2. 原函数
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 | char *strstr(const char *str, const char *sub_str) { const char *str_local = NULL; const char *sub_str_local = NULL; if(!str || !sub_str) { printf("fun:%s param is error\n", __FUNCTION__); return NULL; } while(*str) { str_local = str; sub_str_local = sub_str; do { if(*sub_str_local == '\0') { return str; } }while(*str_local++ == *sub_str_local++); str += 1; } return NULL; } |
3. 例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 1 2 #include "stdio.h" 3 #include "string.h" 4 5 int main() 6 { 7 char *str = "my string test!"; 8 char *substr1 = "te"; 9 char *substr2 = "tt"; 10 11 char *s1 = strstr(str, substr1); 12 char *s2 = strstr(str, substr2); 13 14 printf("str:%s\n", str); 15 printf("substr:%s %s\n", substr1, substr2); 16 printf("result%s %s\n", s1, s2); 17 18 return 0; 19 } |
