目录
strstr 函数的作用
学习 strstr 函数编辑
使用 strstr 函数
模拟实现 strstr 函数
strstr 函数的作用
返回指向 str1 中第一次出现的 str2 的指针,如果 str2 不是 str1 的一部分,则返回 null 指针
学习 strstr 函数
函数的参数:
const char* str1:指向字符串的指针,也就是目标字符串,因为不会改变原字符串,所以使用 const 关键字修饰
const char* str2:指向字符串的指针,也就是原头字符串,在目标字符串中找原头字符串
函数的返回值:
const char* :当在 str1 中 找到了 str2 ,那么就返回 str1 找到 str2 的起始位置,否则返回 NULL ,因为同样不会改变原字符串,所以使用 const 修饰
使用 strstr 函数
代码演示:
char str1[] = "abcdefeeefghijk";
char str2[] = "eefghi";printf("%s\n", strstr(str1, str2));
代码验证:
在 str1 中找到了 str2 ,那么就会从 str1 找到 str2 的位置开始返回,并往后打印,直到 '\0'
模拟实现 strstr 函数
代码演示:
char* my_strstr(char* destination, char* source)
{assert(destination);assert(source);char* p = destination;char* s1 = NULL;char* s2 = NULL;while (*p != '\0'){s1 = p;s2 = source;while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2){s1++;s2++;}if (*s2 == '\0')return p;p++;}return NULL;
}
代码解析:
p 指针用来记录匹配开始的位置,利用 s1 和 s2 同时往后走进行匹配
s1 和 s2 匹配不成功时,p 指针就指向下一个位置
s1 和 s2 匹配成功时,s1 和 s2 就同时往后走,当循环结束后,判断 s2 是否走到了 '\0'
走到了 '\0' 就说明匹配成功,返回 p 这个指针,因为 p 是记录匹配开始的位置的
否则一直匹配不成功,直到 p 指针走到 '\0',就返回 NULL
代码验证:
能匹配成功时:
匹配不成功时: