在C中,数据的对比函数一般使用strcmp和memcmp这两种,现在对这两种进行简介:
1、 memcmp
头文件:string.h
函数名: intmemcmp (const void *buf1, const void *buf2, unsigned int count)
功能:比较内存区域buf1和buf2的前count个字节,其结果为按字节进行对比
结果为:当buf1<buf2时,返回小于0
当buf1=buf2时,返回=0
当buf1>buf2时,返回大于0
2、 strcmp
头文件:string.h
函数名:intstrcmp(const char *s1,const char *s2)
功能:比较字符串s1和s2,s1小于s2则返回负数,s1等于s2则返回零,s1大于s2则返回正数。其对比是以字符为单位的。
附上glibc里的strcmp:
int STRCMP (const char *p1, const char *p2)
{
const unsigned char *s1 = (const unsigned char *) p1;
const unsigned char *s2 = (const unsigned char *) p2;
unsigned char c1, c2;
do
{
c1 = (unsigned char) *s1++;
c2 = (unsigned char) *s2++;
if (c1 == '\0')
returnc1 - c2;
}
while (c1 == c2);
return c1 - c2;
}
可以发现strcmp对比的是字符串。
结论:对比如果是字符串,可以使用strcmp,比较好记忆,
但一般推荐使用memcmp,这个以字节为单位进行比较,可对整型等数据进行比较,具有较好的通用性,跟主要的是strcmp无法对包含‘\0’的数组进行比较。