計算機二級C語言字符串考點歸納
第10章 字符串考點歸納
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]={″I love China!″};
不能等價于
char str[14];
str[]={″I love China!″};
即數組可以在變量定義時整體賦初值,但不能在賦值語句中整體賦值。
(4)在定義一個數組時,在編譯時即已分配內存單元,有確定的地址。而定義一個字符指針變量時,給指針變量分配內存單元,在其中可以放一個地址值,就是說,該指針變量可以指向一個字符型數據,但如果未對它賦予一個地址值,這時該指針變量并未具體指向哪一個字符數據。
(5)指針變量的值是可以改變的。
3.字符串處理函數
C語言中沒有對字符串進行合并、比較和賦值的運算符,但幾乎所有版本的C語言中都提供了有關的庫函數。例如:
(1)strcat函數:連接兩個字符數組中的字符串
(2)strcpy函數:字符拷貝函數
(3)strcmp函數:字符比較函數
(4)strlen函數:測試字符串長度的函數
(5)strlwr函數:將字符串中大寫字母轉換成小寫字母
(6)strupr函數:將字符中小寫字母轉換成大寫字母