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