C语言函数_string.h 之 字符串comparison函数strcmp

strcmp

原型:

        int strcmp( const char *str1, const char *str2);
        str1和str2均为要比较的字符串或者字符数组

功能:

        比较两个字符串的大小,比较方法是:自左向右逐个字符地比较两个字符串的大小(以ASCII值表为顺序依据,如'a'比'A'大),直到出现不同的字符或者'\0'时返回。

头文件:

        string.h

返回值:

        = 0 : 两个字符串上的字符完全相同,即字符串str1与字符串str2中对应的位置上的字符相等并且字符串长度一样。
        < 0 : 两个字符串中,第一个不匹配的字符使得str1[x] < str2[x],或者str1的前strlen(str1)个字符与str2的前strlen(str1)个字符相同,但strlen(str1) < strlen(str2)。
        > 0 : 两个字符串中,第一个不匹配的字符使得str1[x] > str2[x],或者str1的前strlen(str1)个字符与str2的前strlen(str1)个字符相同,但strlen(str1) > strlen(str2)。

说明:

        1、函数参数只能是字符串,可以是数组或者字符串常量,不能是其他类型的参数。
        2、字符比较是自左向右的,并且是按照ASCII表中的顺序进行大小比较的,表中靠前的字符的值比靠后的字符值小。
        3、当两个字符串中有一个到达字符串结束符'\0'时或遇到有不相同的字符时,函数返回。
        4、ANSI标准规定,返回值为正数,负数,0。而有些编译器实现的返回值是两个不同的字符ASCII值的差。

strcmp函数的C语言实现代码:

        /*返回值可能为正数,0,负数三种之一,下面实现采用1表示>, 0表示=, -1表示<*/
        int strcmp( const char *str1, const char *str2)
        {
                while( (*str1 == *str2) && (*str1 != '\0') && (*str2 != '\0'))
                {
                        str1 ++;
                        str2 ++;
                }
                if( *str1 == *str2)
                        return 0;
                else if( *str1 > *str2)
                        return 1;
                else
                        return -1;
        }

例程:

        char *a = "QaBcDeF";
        char *b = "QaBcDeF";
        char *c = "QABcDeF";
        char *d = "qaBcDeF";
        printf("strcmp(a, b) : %d\n", strcmp(a, b));
        printf("strcmp(a, c) : %d\n", strcmp(a, c));
        printf("strcmp(a, d) : %d\n", strcmp(a, d));

输出结果为:

        strcmp(a, b) : 0
        strcmp(a, c) : 1
        strcmp(a, d) : -1

相关函数:        

        strncmp

                函数原型:

                        int strncmp( const char *str1, const char *str2, size_t len);

                功能:

                        比较两个字符串的大小,方法和strcmp一样,不过strncmp最多只比较两个字符串中的前len个字符。

        memcmp

                函数原型:

                        int memcmp( const void *ptr1, const void *ptr2, size_t len);

                功能:

                        比较ptr1和ptr2分别指向的两块内存中的前len个字节的值。

        strcoll

                函数原型:

                        int strcoll( const char *str1, const char *str2);

                功能:

                        strcoll() 会依环境变量 LC_COLLATE 所指定的文字排列次序来比较 str1 和 str2 字符串。 默认情况下,LC_COLLATE 为"POSIX"或"C",strcoll() 和 strcmp() 一样根据ASCII比较字符串大小。对于设置了LC_COLLATE 语言环境的情况下,则根据LLATE 设置的语言排序方式进行比较。例如,汉字会根据拼音进行比较。若字符串 str1 和 str2 相同则返回0。若 str1 大于 str2 则返回大于 0 的值,否则返回小于 0 的值。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值