定義字元陣列和數值型的陣列格式是一樣的,資料型別為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);
gets函式與scanf函式的區別是scanf遇見空格就會停止導致陣列裡面不會有空格,而gets函式遇見換行才會停止,所以可以存在空格。char a[10]
;gets
(a);
舉個例子:
輸入時,輸入i後有乙個空格,此時scanf結束,繼續輸入時就是gets函式在執行,直到回車後兩句輸出語句一起執行,第二行是第乙個puts,第四行是第二個puts。圖中的第三行並不是執行的結果,我使用的是xcode,警告在結果處顯示,vc就不會有這個了。#include
intmain()
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 在對全部陣列元素賦初值時,由於資料的個數已經確定,因此...