c語言程式設計學習之字串

2022-09-07 07:15:06 字數 1792 閱讀 4215

字串字面量是一對雙引號括起來的字串行。當c語言編譯器在程式中遇到長度為n的字串字面量時,它會為字串字面量分配長度為n+1的記憶體空間。這塊記憶體空間用來儲存字串字面量中的字元,末尾再儲存乙個額外字元(空字元)。空字元是乙個所有位都為0的位元組,用轉義字元\0表示。它標誌了字串的結束。

我們知道printf函式的引數接受char*型別的值作為它的第乙個引數。

對於printf("abc");,我們傳給它乙個指標,這個指標為"abc"字面量所在位址的首位址。也就是說,我們傳進去的不是這個字面量,而僅僅是乙個指標而已。

對於字串字面量char *s = "abc"來說,我們可以用*(s+偏移量)的方式訪問其中字元。也可用陣列下標的方式訪問,如s[偏移量]

而試圖改變字串字面量的行為是錯誤的,如*s = "ab"是錯誤的。

注意:不要再需要字串的時候使用字元(反之亦然)!

如函式呼叫printf("a");是合法的,但函式呼叫printf('a');是非法的。

這是因為printf函式期望指標作為它的第乙個引數,前者為字串字面量"a"的指標,後者為字元常量'a'。

字串字面量"a"是用指標來表示的,這個指標指向存放"a"的記憶體單元。字元常量'a'是用整數(字符集的ascii碼)表示的。

常用宣告方式:

#define str_len 80

char str[str_len+1];

當宣告用於存放字串的字元陣列時,要始終保證陣列的長度比字串的長度多乙個字元。這是因為c語言規定每個字串都要以空字元結尾。

有兩種用鍵盤獲取一行字串的方式:

① gets(str);

這種方式預設輸入流是stdin,也就是預設鍵盤輸入。它會直接讀入一行,並捨棄掉換行符,然後在字串最後放入'\0'。但使用它是有風險的,因為讀入的一行的字元數量可能會超過str字元陣列能儲存量的最大值,這樣就會發生越界。

② fgets(str,sizeof(str),stdio);

這個函式讀入一行,但會把末尾的換行符也讀入陣列中。使用它是安全的,因為我們傳入了str字元陣列的大小,它根據字元陣列大小來讀入字元,若已讀取了sizeof(str)-1個字元,就不往下接著讀入字元了,然後在字串末尾放入'\0'。

**

#include int main()
輸入

hello handsome guy !
執行

hello handsome guy !
**

#include int main()
輸入

hello handsome guy !
執行

hello handsome guy !

C程式語言 字串

標籤 空格分隔 c 9.1.2 字串 字串變數 9.1.3 字串 字串的輸入輸出 9.1.4 字串 字串陣列,以及程式引數 9.2.1 字串函式 單字元輸入輸出 9.2.2 字串函式 字串函式strlen 9.2.3 字串函式 字串函式strcmp 9.2.4 字串函式 字串函式strcpy 9.2...

C語言程式設計 學習筆記 字串(I)

字元陣列 char word h e l l o w o r l d 這是乙個字元陣列,它的單元是word 0 h,word 1 e,word 2 l 但是這不是c語言的字串,因此不能用字串 接下來會講 的方式計算。字串應該是這樣 char word h e l l o w o r l d 0 在最...

C 學習之 字串

除了科學計算外,計算機最主要的用途是文書處理。有一系列字元組成的乙個處理單元稱為字串,c 中的字串是用一對雙引號括起來 由 0 作為結束符的一組字元。字串符合陣列的兩個特性 所有元素型別都是字元型,字串中的字元有先後的次序,所以通常用乙個字元陣列來儲存字串。如將 hello,world!這個字元儲存...