(一)strcmp函數
strcmp函數是比較兩個字符串的大小,返回比較的結果。一般形式是:
i=strcmp(字符串,字符串);
當中,字符串1、字符串2均可為字符串常量或變量;i 是用於存放比較結果的整型變量。比較結果是這樣規定的:
①字符串1小於字符串2,strcmp函數返回一個負值;
②字符串1等於字符串2,strcmp函數返回零;
③字符串1大於字符串2,strcmp函數返回一個正值;那么,字符中的大小是怎樣比較的呢?來看一個樣例。
實際上,字符串的比較是比較字符串中各對字符的ASCII碼。首先比較兩個串的第一個字符,若不相等,則停止比較並得出大於或小於的結果;假設相等就接着 比較第二個字符然后第三個字符等等。假設兩上字符串前面的字符一直相等,像"disk"和"disks" 那樣, 前四個字符都一樣, 然后比較第 五個字符, 前一個字符串"disk"僅僅剩下結束符'/0',后一個字符串"disks"剩下's','/0'的ASCII碼小於's'的ASCII 碼,所以得出了結果。因此不管兩個字符串是什么樣,strcmp函數最多比較到當中一個字符串遇到結束符'/0'為止,就能得出結果。
注意:字符串是數組類型而非簡單類型,不能用關系運算進行大小比較。
if("ABC">"DEF") /*錯誤的字符串比較*/
if(strcmp("ABC","DEF") /*正確的字符串比較*/
(二)strcpy函數
strcpy函數用於實現兩個字符串的拷貝。一般形式是:
strcpy(字符中1,字符串2)
當中,字符串1必須是字符串變量,而不能是字符串常量。strcpy函數把字符串2的內容全然拷貝到字符串1中,而無論字符串1中原先存放的是什么。復制后,字符串2保持不變。
例:
注意,因為字符串是數組類型,所以兩個字符串復制不通過賦值運算進行。
t=s; /*錯誤的字符串復制*/
strcpy(t,s); /*正確的字符串復制*/