//strstr:查找子串
//如果在长串中找到子串,会返回子串第一个字母的地址,所以返回类型是char*,找不到返回NULL
#include <stdio.h>
#include <string.h>;
#include <assert.h>
char* my_strstr(const char* str1,const char* str2)
{
assert(str1 && str2);
const char* s1 = str1;
const char* s2 = str2;
const char* p = str1;
while (*p)
{
s1 = p;
s2 = str2;
while (*str1 != '\0' && *str2 != '\0' && *s1 == *s2)
{
s1++;
s2++;
}
if (*s2 == '\0')
{
return (char*)p;
}
p++;
}
return NULL;
}
int main()
{
char email[] = "www.hello.world.com";
char substr[] = "hello.world";
char* ret = my_strstr(email, substr);
if (ret == NULL)
printf("子串不存在\n");
else
printf("%s\n", ret);
return 0;
}
//KMP算法:这个算法也是用来实现在一个字符串中查找子串的效率高,但实现难度大

文章介绍了C语言中的my_strstr函数,用于在一个字符串中查找子串,与KMP算法相比,虽然实现相对简单但效率较高。通过示例展示了函数使用方法和输出结果。

261

被折叠的 条评论
为什么被折叠?



