首先我们要明确函数strstr的作用,用于查看函数原型 strstr函数的函数原型如下: char *strstr(const char *str1, const char *str2); 其中,str1为要查找的字符串,str2为要查找的子字符串。
当我门需要时,我们完全可以去调用它,十分简便,但若要求·你写出一个可以实现其用法的代码你会怎么写?
现在我就给大家实现以下这段代码。
#include<stdio.h>
#include<string.h>
#include<assert.h>
char* my_strstr(const char* p1, const char* p2)//用const使原字符数组不发生改变
{
assert(p1 != NULL);
assert(p2 != NULL);//避免是空指针
char* s1 = NULL;
char* s2 = NULL;
char* cur = (char*)p1;//引入变量达到改变字符的目的
if (*p2 == '\0')//判断是否结束
{
return (char*)p1;
}
while(*cur) {
s1 = cur;
s2 = (char*)p2;
while (*s1&&*s2&& (*s1 == *s2))
{
s1++;
s2++;
}
if (*s2 == '\0') {
return cur;
}
if (*s1 == '\0') {
return NULL;
}
cur++;
}
return NULL;
}
int main() {
char* p1 = "abcdef";
char* p2 = "def";
/*char* ret=strstr(p1, p2);*/
char* ret =my_strstr(p1, p2);
if (ret == NULL)
printf("不存在");
else printf("%s", ret);
return 0;
}
这段代码大家可以自己领悟一下,会得到某些东西的。