//个人认为比较好的代码
char * strstr (register char *buf, register char *sub)
{
if (buf==NULL || sub==NULL)
{
return 0;
}
char *bp;
char *sp;
if (!*sub)
return buf;
while (*buf)
{
bp = buf;
sp = sub;
do {
if (!*sp)
return buf;
} while (*bp++ == *sp++);
buf += 1;
}
return 0;
}
1. 传入的指针是否为NULL。
2. 传入的字符串是否为空串。
3. 比较到 s2[i]==NULL 的时候,证明已经匹配。 s1[i]!=s2[i]已经包含了s1==NULL的情况。
//寡人的代码,比较次
char * my_strstr(const char * buf, const char* sub)
{
if (buf==NULL || sub==NULL)
{
return 0;
}
if (!*buf)
{
if (!*sub)
{
return (char*)buf;
}
else
{
return (char*)NULL;
}
}
for (char* a=(char*)buf;(*a)!=NULL;++a)
{
char* b;
char* tempa;
for (b=(char*)sub, tempa=(char*)a;;++b,++tempa)
{
if (*tempa!=*b)
{
if (*b!=NULL)
{
return (char*)NULL;
}
else if (*tempa!=NULL && *b==NULL)
{
return (char*)a;
}
}
else if (*tempa==NULL && *b==NULL)
{
return (char*)a;
}
}
}
}