C语言 对比数组内容的函数

strcmp

C/C++函数,比较两个字符串

设这两个字符串为str1,str2,

若str1==str2,则返回零;

若str1<str2,则返回负数;

若str1>str2,则返回正数。

原型

extern int strcmp(const char *s1,const char *s2);

源码

int strcmp(const char *str1,const char *str2)

{

    /*不可用while(*str1++==*str2++)来比较,当不相等时仍会执行一次++,

    return返回的比较值实际上是下一个字符。应将++放到循环体中进行。*/

    while(*str1 == *str2)

    {

        if(*str1 == '\0')

            return0;

        str1++;

        str2++;

    }

    return *str1 - *str2;

}
int strcmp(p1,p2)

{

    const char *p1;

    const char *p2;



    register const unsignedchar *s1=(const unsignedchar*)p1;

    register const unsignedchar *s2=(const unsignedchar*)p2;

    unsigned reg_charc1,c2;

    do{

        c1=(unsigned char)*s1++;

        c2=(unsigned char)*s2++;

        if(c1=='\0')

            returnc1-c2;

    }while(c1==c2);

    return c1-c2;

} 

libc_hidden_builtin_def(strcmp)





//最正宗的源码(他以上代码是K&R C规范的,ASCI C的在下面)



/*strcmp function*/

#include <string.h> 

int(strap)(const char *sl,const char *s2)//****************************mark

{

    /*compare unsigned char sl[],s2[]*/

    for(;*sl==*s2;++sl,++s2)

        if(*sl=='\0')

            return(0);

    return((*(unsignedchar*)sl<*(unsignedchar*)s2)?-1:+1);
}
strcmp另外的源代码如下:



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);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值