高效率字符串比较函数

来源:互联网 发布:思维导图软件mac版 编辑:程序博客网 时间:2024/06/06 00:23

机器字长是指计算机进行一次整数运算所能处理的二进制数据的位数(整数运算即定点整数运算)。int长度为机器字长。char只有一个字节,可将字符指针转化为int型,每次取出机器字长后进行比较运算。


int StrCmp(char *s, char *d, int length)
{ //增加了判断字符串是否为空
    int i = 0, r = -1;
    int n=sizeof(int);
    for (; i < length-n+1; i+=n)
    {
        if ((!(s + i)) || (!(d + i)))
        {
            perror("StrCmp error:can not ascess\n");
            return -1;
        }
        if (*(int *)(s + i) != *(int *)(d + i))
        {//转化为整型指针,每次间访取出的数据为机器字长,是char的n倍
            //两个字符相异
            r = 1;
            return r;
        }
    }
    if (i == length) //字符串比较完,且完全相同
    {
        r = 0;
        return r;
    }
    else for (; i < length; i++)
    {//字符串长度可能不为4的倍数,即每个像素点不是32位,单独处理剩下的n-1个字符
        if ((!(s + i)) || (!(d + i)))
        {
            perror("XImageDataCmp error:can not ascess\n");
            return -1;
        }
        if (*(s + i) != *(d + i))
        { //两个字符相异
            r = 1;
            return r;
        }
    }
    if (i == length) //字符串比较完,且完全相同
    {
        r = 0;
        return r;
    }
    return r;
}






参:http://www.educity.cn/wenda/576871.html

0 0