字元陣列與字串

2021-06-21 04:03:19 字數 3466 閱讀 8828

字元陣列與字串

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...