您的位置:首页 > 其它

写正确函数需要注意的地方:strstr

2012-08-11 20:54 295 查看
//个人认为比较好的代码
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;
}
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  null
相关文章推荐