10.1 字串與字元陣列 1.字元陣列的定義
定義方法與前面介紹的類似,只是將陣列定義為字元型即可。例如:
char c[10];
這裡定義了乙個包含10個元素的字元陣列c。
2.字元陣列的初始化
對字元陣列初始化,可以採用以下方法:
(1)逐個字元賦給陣列中各元素;
(2)用字串常量使字元陣列初始化。
3.字串
在c語言中,字串是作為字元陣列來處理的,字串可以存放在字元型一維陣列中,故可以把字元型一維陣列作為字串變數。
字串常量是用雙引號括起來的一串字元。
c語言中約定用′\0′作為字串的結束標誌,它佔記憶體空間,但不計入串的長度,′\0′的**值為0。
系統對字串常量也自動加乙個′\0′作為結束符。例如″c language″共有10個字元,但在記憶體中佔11個位元組,最後乙個位元組存放′\0′。
4.字元陣列的輸入輸出
(1)逐個字元輸入和輸出
①在標準輸入輸出printf和scanf中使用%c格式描述符;
②使用getchar和putchar函式。例如:
for(i=0;i<10;i++)
scanf(″%c″,&str[i]);/*或str[i]=getchar();*/
str[i]=′\0′;/*人為加上串結束標誌*/
for(i=0;i<10;i++)
printf(″%c″,str[i]);/*或putchar(str[i]);*/
(2)字串整體輸入輸出
①在標準輸入輸出函式printf和scanf中使用%s格式描述符;
輸入形式:
char str[6];
scanf(″%s″,str);
其中 str為字元陣列名,代表著str字元陣列的起始位址,輸入時系統自動在每個字串後加入結束符′\0′。若同時輸入多個字串,則以空格或回車符分隔。
輸入形式:
printf(″%s″,str);
輸字串時,遇第乙個′\0′即結束。但可人為控制輸出串所佔的域寬如:
printf(″%6s″,str);/*若字串中字元多於6個,仍將全部輸出*/
printf(″%-6s″,str);/*只輸出前6個字元,多餘的不輸出*/
②使用gets和puts函式輸入輸出一行
gets函式用來從終端鍵盤讀字元,直到遇換行符為止,換行符不屬字串的內容。
呼叫形式:
gets(str);
str為字元陣列名或字元指標,字串輸入後,系統自動將′\0′置於串尾代替換行符。若輸入串長超出陣列定義長度時,系統報錯。
puts函式用來把字串的內容顯示在螢幕上。
呼叫形式:
puts(str);
str的含義同上。輸出時,遇到第乙個′\0′結束並自動換行,字串中可以含轉義字元。
10.2 字串的指標以及指向字串的指標變數
1.用指標方法實現乙個字串的儲存和運算
如:char * strp=″china″;
此處定義了乙個字元指標變數strp,變數中存放的是字串第乙個字元的位址。
c語言對字串常量是按字元陣列處理的,它實際上在記憶體開闢了乙個字元陣列用來存放字串變數,並把字串首位址賦給字元指標變數strp。
在輸出時用
printf(″%s\n″,strp);
通過字元陣列名或字元指標變數可以輸出乙個字串。而對乙個數值型陣列,是不能企圖用陣列名輸出它的全部元素的。
2.字元指標變數與字元陣列
雖然用字元陣列和字元指標變數都能實現字串的儲存和運算,但它們二者之間是有區別的,不應混為一談,主要有以下幾點:
(1)字元陣列由若干個元素組成,每個元素中放乙個字元,而字元指標變數中存放的是位址(字串的首位址),決不是將字串放到字元指標變數中。
(2)對字元陣列只能對各個元素賦值,不能用以下辦法對字元陣列賦值。
char str[14];
str=″i love china!″;
而對字元指標變數,可以採用下面方法賦值:
char *a;
a=″i love china!″;
但注意賦給a的不是字元,而是字串的首位址。
(3)賦初值時,對以下的變數定義和賦初值:
char *a=″i love china!″;
等價於:
char *a;
a=″i love china!″;
而對陣列初始化時:
static char str[14]=;
不能等價於
char str[14];
str[]=;
即陣列可以在變數定義時整體賦初值,但不能在賦值語句中整體賦值。
(4)在定義乙個陣列時,在編譯時即已分配記憶體單元,有確定的位址。而定義乙個字元指標變數時,給指標變數分配記憶體單元,在其中可以放乙個位址值,就是說,該指標變數可以指向乙個字元型資料,但如果未對它賦予乙個位址值,這時該指標變數並未具體指向哪乙個字元資料。
(5)指標變數的值是可以改變的。
3.字串處理函式
c語言中沒有對字串進行合併、比較和賦值的運算子,但幾乎所有版本的c語言中都提供了有關的庫函式。例如:
(1)strcat函式:連線兩個字元陣列中的字串
(2)strcpy函式:字元拷貝函式
(3)strcmp函式:字元比較函式
(4)strlen函式:測試字串長度的函式
(5)strlwr函式:將字串中大寫字母轉換成小寫字母
(6)strupr函式:將字元中小寫字母轉換成大寫字母
2023年計算機二級C語言考點解析 檔案
16.1 檔案型別指標 file型別指標 c語言中的檔案分緩衝型檔案和非緩衝型檔案兩種,此處只討論緩衝型檔案。對於緩衝型檔案,每個被使用的檔案都在記憶體中開闢乙個區,用來存放檔案的有關資訊 如檔案名字 檔案狀態及檔案當前位置等 這些資訊儲存在有關結構體型別的變數中。該結構體型別由系統定義,取名為fi...
2023年計算機二級C語言考點解析 運算
15.1 位運算的含義及應用 1.位的概念 大多數計算機系統的記憶體儲器是由眾多的儲存單元構成的。在微機中,每個儲存單元是1個位元組,它由8位二進位制數構成,可以表示28 256種資訊,各位的編號從0 7,最左邊的位 第7位 是最高位,最右邊的位 第0位 是最低位。由於二進位制本身的特點,各位上的數...
2023年計算機二級C語言考點解析 陣列
9.1 一維陣列的定義 初始化和引用 1.一維陣列的定義方式為 型別說明符 陣列名 常量表示式 1 陣列名的命名方法與變數名相同,遵循識別符號命名規則 2 陣列是用方括號括起來的常量表示式,不能用圓括號 3 常量表示式表示陣列元素的個數,即陣列的長度,陣列的下標從0開始,下標的最大值為 常量表示式 ...