下面代码是glibc库中strstr函数源码中判断子串是否为父串的前缀的一段代码,十分简练,考虑周到。
char *
STRSTR (const char *haystack_start, const char *needle_start){
const char *haystack = haystack_start;
const char *needle = needle_start;
bool ok = true;
while (*haystack && *needle)
ok &= *haystack++ == *needle++;
if (*needle)
return NULL;
if (ok)
return (char *) haystack_start;
}