C标准库函数实现之strstr(转)

时间:2023-03-09 07:03:34
C标准库函数实现之strstr(转)

看下Linux下的实现:

char *strstr(const char *s1, const char *s2)
{
size_t l1, l2; l2 = strlen(s2);
if (!l2)
return (char *)s1;
l1 = strlen(s1);
while (l1 >= l2)
{
l1--;
if (!memcmp(s1, s2, l2))
return (char *)s1;
s1++;
}
return NULL;
}

思路:

  1. 检测字符串安全性,s2为空果断抛弃之。

  2. s1逐个递增,并与s2整串比较内存大小,判断字串是否相等。相等则返回s1,否则s1++,再执行比较。

  3. 最后返回空值,代表未找到相符的串