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
我认为存在一些问题。如果strlen(s2)>strlen(s1)
,那么++s1
可能超出范围。不幸的是,这时函数会返回错误。