1.strcmp函数
函数原型:
int strcmp (const char *cs,const char *ct)
{
unsigned char c1, c2;
while(1)
{
c1=*cs++;
c2=*ct++;
if(c1 != c2)
return c1 < c2 ? -1 : 1;
if(!c1)
break;
}
return 0;
}
功能:比较两个字符串
参数:@cs 比较的源字符串
@ct 比较的目的字符串
返回值:相等,返回0
cs比ct小,返回-1
cs比ct大,返回1
缺点:没有检查传入的参数是否为空,引入临时变量
改进后的strcmp函数:
int strcmp (const char *cs,const char *ct)
{
assert(cs);
assert(ct);
while(1)
{
if(*cs != *ct)
return *cs < *ct ? -1 : 1;
if( !(*cs) )
break;
cs++;
ct++;
}
return 0;
}
2.memcmp函数
函数原型:
int memcmp(const void *cs, const void *ct, size_t count)
{
const unsigned char *su1, *su2;
int res = 0;
for(su1 = cs, su2 = ct; 0<count; ++su1, su2, count--)
if((res = *su1 - *su2) != 0 )
break;
return res;
}
功能:比较两块内存
参数:@cs 比较的源内存
@ct 比较的目的内存
@count 需要比较的字节数
返回值:相等,返回0
cs比ct小,返回负数
cs比ct大,返回正数
缺点:没有检查传入的参数是否为空,引入临时变量
改进后的memcmp函数:
int memcmp(char *str1, char *str2, int len)
{
assert(str1);
assert(str2);
while(len--)
{
while(*str1==*str2)
{
if(*str1=='\0')
return 0;
str1++;
str2++;
}
}
if(*str1>*str2)
return 1;
if(*str1<*str2)
return -1;
}
关于memcmp函数详解:
点击打开链接