C语言基础之strcmp()和memcmp()

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函数详解: 点击打开链接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值