int __cdecl strcmp (
const char * src,
const char * dst
)
{
int ret = 0 ;
while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst&&*src)
++src, ++dst;
if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;
return( ret );
}
仔细一分析strcmp的源码,写的有简单有缜密,本来以为光有一个&&*dst就行了,必须*dst和*src都得有,哈哈,因为比较是两给字符串的长度可能不一样,短的字符串可能直到字符为NULL之前都与长的字符串都相同。