看下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; }
思路:
检测字符串安全性,s2为空果断抛弃之。
s1逐个递增,并与s2整串比较内存大小,判断字串是否相等。相等则返回s1,否则s1++,再执行比较。
最后返回空值,代表未找到相符的串