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