1. 解释
(1)函数原型:
char *strstr(const char *str1, const char *str2)
(2) 头文件:
#include<string.h>
(3) 返回:
返回字符串str中第一次出现子串substr的地址;如果没有检索到子串,则返回NULL。
(4) 作用:
找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。返回该位置的指针,如找不到,返回空指针。
2. 原函数
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 #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 }