字元陣列與字串
6.3.1 字元陣列的逐個字元操作
[案例6.5]從鍵盤輸入乙個字串,回車鍵結束,並將字串在螢幕上輸出。
main()
i=0;
while(str!='\\x0d')
printf(\"%c\",str[i++]);
printf(\"\\n\");
getch();
} 1.字元陣列的定義
1維字元陣列,用於儲存和處理1個字串,其定義格式與1維數值陣列一樣。
2維字元陣列,用於同時儲存和處理多個字串,其定義格式與2維數值陣列一樣。
2.字元陣列的初始化
字元陣列的初始化,可以通過為每個陣列元素指定初值字元來實現。
3.字元陣列的引用
字元陣列的逐個字元引用,與引用數值陣列元素類似。
(1)字元陣列的輸入
除了可以通過初始化使字元陣列各元素得到初值外,也可以使用getchar()或scanf()函式輸入字元。
例如:
char str[10];
…… for(i=0; i<10; i++)
…… (2)字元陣列的輸出
字元陣列的輸出,可以用putchar()或printf()函式。
例如:
char str[10]=\"c language\";
…… for(i=0; i<10; i++) printf(\"%c\", str);
printf(\"\\n\");
…… 注意:逐個字元輸入、輸出時,要指出元素的下標,而且使用「%c」格式符。另外,從鍵盤上輸入字元時,無需輸入字元的定界符──單引號;輸出時,系統也不輸出字元的定界符。
6.3.2 字元陣列的整體操作
[案例6.6] 字元陣列的整體輸入與輸出。
main()
; for(i=0;i<5;i++)
printf(\"\\n%s\\t\",name);
getch();
} 1.字串及其結束標誌
所謂字串,是指若干有效字元的序列。c語言中的字串,可以包括字母、數字、專用字元、轉義字元等。
c語言規定:以『\\0』作為字串結束標誌(『\\0』代表ascii碼為0的字元,表示乙個「空操作」,只起乙個標誌作用)。因此可以對字元陣列採用另一種方式進行操作了──字元陣列的整體操作。
注意:由於系統在儲存字串常量時,會在串尾自動加上1個結束標誌,所以無需人為地再加1個。
另外,由於結束標誌也要在字元陣列中占用乙個元素的儲存空間,因此在說明字元陣列長度時,至少為字串所需長度加1。
2.字元陣列的整體初始化
字串設定了結束標誌以後,對字元陣列的初始化,就可以用字串常量來初始化字元陣列。
3.字元陣列的整體引用
(1)字串的輸入
除了可以通過初始化使字元陣列各元素得到初值外,也可以使用scanf()函式輸入字串。
(2)字串的輸出
printf()函式,不僅可以逐個輸出字元陣列元素,還可以整體輸出存放在字元陣列中的字串。
6.3.3 常用的字串處理函式
字串標準函式的原型在標頭檔案string.h中。
1.輸入字串──gets()函式
(1)呼叫方式:gets(字元陣列)
(2)函式功能:從標準輸入裝置(stdin)──鍵盤上,讀取1個字串(可以包含空格),並將其儲存到字元陣列中去。
(3)使用說明
1)gets()讀取的字串,其長度沒有限制,程式設計者要保證字元陣列有足夠大的空間,存放輸入的字串。
2)該函式輸入的字串中允許包含空格,而scanf()函式不允許。
2.輸出字串──puts()函式
(1)呼叫方式:puts(字元陣列)
(2)函式功能:把字元陣列中所存放的字串,輸出到標準輸出裝置中去,並用『\\n』取代字串的結束標誌『\\0』。所以用puts()函式輸出字串時,不要求另加換行符。
( 3)使用說明
1)字串中允許包含轉義字元,輸出時產生乙個控制操作。
2)該函式一次只能輸出乙個字串,而printf()函式也能用來輸出字串,且一次能輸出多個。
3.字串比較──strcmp()函式
(1)呼叫方式:strcmp(字串1 ,字串2)
其中「字串」可以是串常量,也可以是1維字元陣列。
(2)函式功能:比較兩個字串的大小。
如果:字串1=字串2,函式返回值等於0;
字串1《字串2,函式返回值負整數;
字串1>字串2,函式返回值正整數。
(3)使用說明
1)如果乙個字串是另乙個字串從頭開始的子串,則母串為大。
2)不能使用關係運算子「==」來比較兩個字串,只能用strcmp() 函式來處理。
[案例6.7] gets函式和strcmp函式的應用。
#include \"stdio.h\"
main()
} 4.拷貝字串──strcpy()函式
(1)呼叫方式:strcpy(字元陣列, 字串)
其中「字串」可以是串常量,也可以是字元陣列。
(2)函式功能:將「字串」完整地複製到「字元陣列」中,字元陣列中原有內容被覆蓋。
(3)使用說明
1)字元陣列必須定義得足夠大,以便容納複製過來的字串。複製時,連同結束標誌'\\0'一起複製。
2)不能用賦值運算子「=」將乙個字串直接賦值給乙個字元陣列,只能用strcpy()函式來處理。
5.連線字串──strcat()函式
(1)呼叫方式:strcat(字元陣列, 字串)
(2)函式功能:把「字串」連線到「字元陣列」中的字串尾端,並儲存於「字元陣列」中。「字元陣列」中原來的結束標誌,被「字串」的第乙個字元覆蓋,而「字串」在操作中未被修改。
(3)使用說明
1)由於沒有邊界檢查,程式設計者要注意保證「字元陣列」定義得足夠大,以便容納連線後的目標字串;否則,會因長度不夠而產生問題。
2)連線前兩個字串都有結束標誌'\\0',連線後「字元陣列」中儲存的字串的結束標誌'\\0'被捨棄,只在目標串的最後保留乙個'\\0'。
6.求字串長度──strlen()函式(len是length的縮寫)
(1)呼叫方式:strlen(字串)
(2)函式功能:求字串(常量或字元陣列)的實際長度(不包含結束標誌)。
7.將字串中大寫字母轉換成小寫──strlwr()函式
(1)呼叫方式:strlwr(字串)
(2)函式功能:將字串中的大寫字母轉換成小寫,其它字元(包括小寫字母和非字母字元)不轉換。
8.將字串中小寫字母轉換成大寫──strupr()函式
(1)呼叫方式:strupr(字串)
(2)函式功能:將字串中小寫字母轉換成大寫,其它字元(包括大寫字母和非字母字元)不轉換。
字元陣列與字串
字元陣列與字串 字串就是字元的序列,可看作單個資料項。定義在雙引號之間的字元組 雙引號除外 就是乙個字串常量。例 man is abviously made to think 字串變數的宣告與初始化 c語言並不支援字串資料型別。但是,它允許作為字元陣列來表示字串。因此在c語言中,字串變數就是任何合法...
字元陣列與字串
char str 6 char str2 6 world printf s n str scanf s str2 for i 0 str i 0 i 說明 系統為了明確區分記憶體上的字串從屬關係,它會去尋找空字元,ascii嗎為0 我們稱為結束符,從陣列名指標位一直往後找,知道找到空字元為止。既然字...
字串與字元陣列
用scanf輸入字串 include int main scanf s s s 的作用就是輸入乙個字串的,scanf是以回車鍵作為輸入完成標示的,但回車鍵本身並不會作為字串的一部分 如果scanf引數中的陣列長度小於使用者在鍵盤輸入的長度,那麼scanf就會緩衝區溢位,導致程式崩潰 int i fo...