int __cdecl strcmp (
const char * src,
const char * dst
)
{
int ret = 0 ;
while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
++src, ++dst;
if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;
return( ret );
}
strcmp的实现函数如上,比较的是两者的ASCII码,可以看出它一直比较到第一个不相同的字符,或者是第一个字符的结尾。NULL的ASCII值是0,(空格的ASCII值是32),这提醒我们,是两个长度不一的字符串, 如果 能一起比较到某个字符串的结尾,那么长度较短的字符串的是比较“小”的,因为NULL的ASCII值是最小的。这也符合字典的排列顺序。