C語言學習筆記之陣列(三)

2021-10-02 16:21:53 字數 2771 閱讀 6359

定義字元陣列和數值型的陣列格式是一樣的,資料型別為char型。

如char a[10];這就定義了長度為10的陣列,每個元素都存放乙個字元。

對字元的初始化,最容易理解的是用「初始化列表」,把各個字元一次賦給陣列中的元素。

例如:char a[10] = ;

把這十個字元一次賦給a[0]-a[9]。

如果定義字元陣列不進行初始化,則陣列中各個元素的值是不可預料的。如果花括號中字元的個數大於陣列的長度則會出現語法錯誤。

如果字元的個數小於陣列的長度,則將這些字元賦值給陣列前面的元素,剩餘的元素自動補位空字元(即』\0』)。

如果不定義陣列的長度,系統會根據初值的個數自動判斷陣列的長度。

也可以定義和初始化乙個二維陣列。

char dia[5][5]=,,,,}

單個元素的引用和之前是一樣的,並且可以通過迴圈來連續輸出字元得到字串。

例:輸出已知的字串。

#include

intmain()

;int i;

for(i =

0;i<

15;i++

)printf

("\n");

return0;

}

字元陣列的輸入輸出有兩種辦法

1、逐個字元的輸入輸出,用格式符「%c」輸入或輸出乙個字元。

2、將整個字串一次輸入或輸出。用哪個「%s」格式符。

例如:char c[10]="china";ptintf("%s\n",c);c

hina

\0\0

\0\0

\0輸出時遇到』\0』就停止輸出,輸出結果為china。

要注意的是:

1、輸出字元中不包括結束符。

2、用「%s「格式符輸出字串時,printf中的輸出項是陣列名而不是陣列元素。

3、如果陣列長度大於字串的實際長度,只輸出到遇見』\0』結束。

4、如果字元陣列有多個』\0』,則遇見第乙個就結束。

5、可以用scanf函式輸入乙個字串。

scanf("%s",c);

系統會在你輸入的字元後面自動補』\0』,輸入的字元中不能有空格,scanf函式在遇見空格時就不再繼續輸入。

1、puts函式——輸出字串函式

一般形式為:puts(字元陣列)

作用是講乙個字串(以』\0』結束的字串行)輸出到螢幕上。例如:

char a=

"china"

;puts

(a);

char a[10]

;gets

(a);

gets函式與scanf函式的區別是scanf遇見空格就會停止導致陣列裡面不會有空格,而gets函式遇見換行才會停止,所以可以存在空格。

舉個例子:

#include

intmain()

輸入時,輸入i後有乙個空格,此時scanf結束,繼續輸入時就是gets函式在執行,直到回車後兩句輸出語句一起執行,第二行是第乙個puts,第四行是第二個puts。圖中的第三行並不是執行的結果,我使用的是xcode,警告在結果處顯示,vc就不會有這個了。

3、strcat——字串連線函式

使用strcat函式需要匯入標頭檔案string.h,作用是將兩個字元陣列中的字串連線起來,並返回到乙個新的陣列。

格式:strcat(str1,str2); 將str2連線到str1後面

例如:給定兩個陣列str1,str2,將str2連到str1後面並將得到的字串儲存在str1中。

4、strcpy函式——字串複製函式

需要匯入string.h標頭檔案,作用將str2的字串複製到str1中去。

格式:strcpy(str1,str2);

注意,str1必須足夠大以便容納str2,也就是說str1的長度必須大於等於str2。

strcpy的第乙個引數必須寫成陣列名的形式,第二個引數可以使陣列名也可以是字串常量。

例如:strcpy(str1,"china);

5、strcmp函式——字串比較函式

需要匯入string.h標頭檔案,作用是比較str1和str2的大小,在字串中不能使用比較符號來判斷兩個字串的大小,必須使用strcmp函式來比較大小。

strcmp函式的執行過程是從字串的第乙個字元開始比較,如果相等則比較下乙個元素,直到遇見第乙個不等的字元,比較第乙個不等的字元,結果就是整個字串的比較結果,如果大於則返回乙個正數,小於則返回乙個負數,如果兩個字串完全相等則返回0。

例如:str1 = 「china」,str2 = 「china」,從第乙個字元開始比較,『c』、『h』、『i』、'n』都是相等的,到第五個字元時,『a』>'a』所以str1>str2,那麼strcmp(str1,str2)>0。要注意的是小寫字母是大於大寫字母的,因為比較字元大小時比較其ascii碼的大小,小寫字母的ascii大於大寫字母的ascii。

7、還有其他的一些字串處理函式,比如測字串長度的strlen函式,轉換小寫的strlwr函式,轉換大寫的strupr函式,這些函式都需要匯入string.h標頭檔案

C語言學習筆記之陣列(一)

陣列是一組有序資料的集合,陣列依靠陣列名和下標來唯一確定陣列中的元素,陣列中的每乙個元素都屬於同一種資料型別。在理解陣列之前回憶一下變數的定義過程,比如定義整型資料,int a 在執行到這句話的時候,在記憶體裡分配乙個4個位元組大小的記憶體空間用來存放資料,而陣列便是開闢一段連續的空間來存放一組資料...

c語言學習筆記之陣列(二)

如果一維陣列可以理解為乙個佇列,那麼二維陣列便是乙個矩陣,有行數有列數。二維陣列的定義和一維陣列類似 型別說明符 陣列名 常量表示式 常量表示式 比如 float a 3 4 b 5 10 定義a為3行4列的陣列,b為5行10列的陣列。所以在定義時,第乙個方括號內表示行,第二個方括號表示列。二位陣列...

C語言學習(三)陣列

型別說明符 陣列名 常量表示式 1.1 在定義陣列時對陣列元素賦以初值。例如 int a 10 1.2 可以只給一部分元素賦值例如 int a 10 其餘資料為0 1.3 使乙個陣列中全部元素值為0int a 10 或 int a 10 1.4 在對全部陣列元素賦初值時,由於資料的個數已經確定,因此...