C语言中字符数组和一般的字符串如何进行比较?

如题所述

C语言的字符数组有两种,比较方式也有所不同。

1 字符串。

C语言的字符串是用字符数组表示的。约定以'\0'(ascii码0)作为结尾标记。

对于字符串类的字符数组,可以用string.h中的strcmp函数进行比较。

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

其比较规则为:

a, 从左向右依次比较每个元素;

b, 如果出现str1的元素ascii码比较大,则返回1;如果出现str2元素ascii码比较大,则返回-1。如果相等,则继续。

c, 如果一直相等,直到遇到\0,这时检查是否均为\0,如果均为\0,那么返回0;

d, 如果str1到\0,而str2没到,返回-1; 否则返回1。

总结规则就是,如果str1比str2大,返回1;如果相等,返回0;如果str1小,返回-1。


2 不带\0结束的字符数组。

对于此类数组,没有库函数可供使用,只能自己写函数进行比较。规则可以仿照strcmp的规则。

由于没有\0作为结束,所以参数中必须传入每个数组的元素个数。

int char_array_cmp(char *s1, int l1, char *s2, int l2)
{
    int lmin = l1>l2? l2:l1; //较小长度者。
    int i;
    
    for(i = 0; i < lmin; i ++)
        if(s1[i] > s2[i]) return 1;
        else if(s1[i] < s2[i]) return -1;
    
    //运行到这里,表示所有已判断元素均相等。
    if(l1 == l2) return 0;
    if(l1 > l2) return 1;
    
    return -1;//l1 < l2的情况。
}
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网