C语言--strcmp()函数


strcmp函数是string compare(字符串比较)的缩写,用于比较两个字符串并根据比较结果返回整数。基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。

首先说明strcmp的使用格式:

        strcmp(char1 *, char2 *);

        该函数功能是:从第一个元素开始,依次比较字符串数字char1和char2,如果char1的第n个元素比char2d的第n个元素大,则返回值为大于0 的数,相反的话,则返回小于0的数,如果相等,则继续比较                n+1个元素,直到第n+1个不相等,就停止比较,并返回相应的值。(注意:char1 *这里实际放的是一个指针,字符数组名实际就是一个常量指针)

       举例:

        char name_1[10]={"zhangsan"}; name_2[10]={"zhaoliu"};

        syrcmp(name_1,name_2);

        比较的结果是:因为“z”“h”“a”都相等,所以继续比较第四个元素“n” 和“o”;比较至此,已经有返回值了,所以停止后边的比较,并返回相应的值。

        

        应用实例;按照字母从小到大输出姓名

    

 char name[5][20]={"zhangsan","lisi","wangwu","zhaoliu","any"};

        //k控制比较的趟数

      for(int k=0; k<5;k++){

               //i控制比较的第一维空间

            for (int i = 0; i<4; i++) {

                //j控制每个姓名的第j个字母

                for (int j = 0; j<20; j++) {

                    //利用strcmp  函数比较字母大小

                    if (strcmp(&name[i][j], &name[i+1][j])>0) {     //使用&的原因是:字符数组名的本质是一个指针,指向一个地址。在这里使用&取某一个元素的地址。

                        char temp[20];

                        strcpy(temp, name[i]);

                        strcpy(name[i], name[i+1]);

                        strcpy(name[i+1], temp);

                    }

                    //交换结束后,停止本组名字的继续比较,进行下一个名字的比较

                    break;

                }

            }

            }

        for (int i = 0; i < 5; i++) {

            printf("%s\n",name[i]);

        }

//运行结果

        any

        lisi

        wangwu

        zhaoliu

        zhangsan

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM