C語言字符串基礎學習
字符串與字符數組都是描述由多個字符構成的數據,字符串借用字符數組來完成處理。但請注意:
(1)表示字符串數據用雙引號表示,而字符數據用單引號。
(2)字符串的長度可以根據串中字符個數臨時確定,而字符數組的長度必須事先規定。
(3)對字符串,系統在串尾加’\O’作為字符串的結束標志,而字符數組並不要求最後一個字符為’\O’。
(4)用字符數組來處理字符串時,字符數組的長度應比要處理的字符串長度大1,以存放串尾結束符’\O’。
例如:
static char city[9]= ’c’,’h’,’a’,’n’,’g‘,’s’,’h’,’a’,’\0').可用字符串描述為:
static char city[9]={"changsha")或"changsha";
上述兩條語句可分別理解為用字符數組來處理字符串,用字符串對字符數組初始化。但千萬請注意不能在程序中給字符數組賦值。例如:
city一"changsha";/*絕對錯誤*/
下面介紹用字符數組來處理字符串的一些整體操作:
1.輸入輸出
輸入輸出用scan{()、printf()函數完成,采用”%s”格式。輸入輸出參數用字符數組名。
例如,有如下程序:
main()
{char comp[:9];
scan{(”%s”,comp);/*本身就是地址,不需加地址運算符*/
print{COMP=%s”,comp);
}
輸入數據:CHINAONE
運行結果:COMP—CHINAONE
說明:
(1)輸入字符串數據時不需用界定符。
(2)輸入多個字符串數據時,以空格分隔數據。如果字符串數據本身包含有空格字符,需采用特殊處理。
(3)輸出先找到存放字符串的字符數組的首地址,遇串尾結束符’\0’結束。輸出字符不包括串尾結束符’\O’。
(4)如果字符數組中包含多個’\O’,輸出遇到第一個’\0’結束。
(5)如果字符數組長度大於字符串實際長度,也只輸出到’\O’結束。
2.字符串處理函數
puts()與gets()函數包含在頭文件stdio.h中,字符串處理函數包含在頭文件string.h中,用#include,,String.h”指明。
在以下的函數中,參數str、str1、str2為字符數組類型或指向字符的指針類型。
(1)puts(str)
輸出指定字符串。參數可以為字符串常量。
(2)gets(str)
從鍵盤輸入字符串至字符數組str中,輸入的字符串可以包含空格。函數的返回值是字符數組str的首地址。
(3)strcpy(strl,str2)
將str2的值復制到strl中,實際上完成字符串的賦值操作。要求strl的長度大於str2的長度,第二個參數可以是字符串常量。
(4)strcat(strl,str2)
將str2的值連接到strl中原有值的後面。注意strl必須足夠大,以便能容納兩個字符數組中的所有值。連接完成後,兩個字符串並成一個字符串,第一個字符串後面的原結束符自動取消。
(5)strcmp(st訂,str2)
比較strl和str2,若兩者相同,返回函數值為0;若strl大於str2,返回函數值為一個正整數;若strl小於str2,返回函數值為一個負整數。
字符串比較規則與其它語言相同,將兩個字符串中的字符從左至右依次比較,如果全部字符相同,則認為相等;若出現不同字符,則以第一個不同字符比較結果為准。
兩個參數可以是字符串常量。
(6)strlen(str)
函數的返回值為字符串的實際長度。
(7)strlwr-(str)
將字符串中大寫字母轉換成小寫字母。
(8)strupr’(str)
將字符串中小寫字母轉換成大寫字母。