int strcmp(const char *s1, const char *s2)
{
int ret = 0;
while (!(ret = *(unsigned char *) s1 - *(unsigned char *) s2) && *s2) ++s1, ++s2;
if (ret < 0)
ret = -1;
else if (ret > 0)
ret = 1 ;
return ret;
}
我回顾从代码:http://www.jbox.dk/sanos/source/lib/string.c.htmlçSTRCMP源代码
我想这是有一些问题。 如果strlen(s2)>strlen(s1)
,则++s1
可能超出范围。不幸的是,那么函数返回错误。
我在链接中看到的一个小问题是strcmp和strncmp以不同的方式返回结果。 strcmp不必要地将结果限制在-1 .. + 1范围内,而strncmp则返回完整的差异。 – kusma 2010-12-21 09:20:34