strstr
函数原型:
char *strstr( const char *string, const char *strCharSet );
const char *string
要搜索的字符串const char *strCharSet
子串char *strstr
返回第一个出现字串的起始地址,方便函数链式访问
函数作用:
在 string
字符串中寻找 strCharSet
子串。找到则返回第一个出现子串的起始位置的地址。如果找不到返回NULL
,如果 strCharSet
指向长度为零的字符串,则函数返回string
。
函数使用:
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "abcdefabcdef";
char str2[] = "cdef";
char str3[] = "abbbce";
char str4[] = "bbc";
printf("%s\n" ,strstr(str1, str2));
printf("%s\n" , strstr(str3, str4));
return 0;
}
函数模拟实现
char* _strstr(
const char * str1,
const char * str2
) {
assert(str1 != NULL && str2 != NULL);
const char* str1_start = str1;
const char* str2_start = str2;
const char* temp = str1;
while (*temp) {
while ( (*str1_start) && (*str2_start) && (*str1_start == *str2_start) ) {
str1_start++;
str2_start++;
}
if (!*str2_start) {
return (char *)temp;
}
// 重置
str2_start = str2;
// 调整
temp++;
str1_start = temp;
}
return NULL;
}