6 C語言之字串

2021-09-30 10:59:30 字數 1707 閱讀 5543

1. 字串入門

字串也稱字串字面量,是用一對雙引號括起來的字串行。

我們也許經常會遇到字串特別長的情況,在c#中,我們一般會用@符號來表示。

console.writeline(@"hello

world");

但是在c中,我們會這樣來寫:

int main()

還記得我曾經講的最多的一句話就是,把字串當做字元陣列來玩。

其實在本質上,c語言就是把字串作為字元陣列來處理,當c語言編譯器遇到長度為n的字串時,它會為字串字面量分配長度為n+1的記憶體空間。之所以為n+1,是因為在字串的末尾以』\0』來結尾,來標識字串的結束。

既然,我們說字串在編譯器中以字元陣列來處理,那麼編譯器自然會將其看成char *型別的指標。也就是說,我們可以這樣來寫:

int main()

2. 字元陣列和字元指標這樣的兩個宣告:

char str1="abc";

char *str2="def";

前者是普通的字元陣列,後者是字元指標。兩者都可以用作字串,但是他們是不一樣的。

宣告為陣列時,就像其他常規的陣列一樣,可以隨意修改陣列中的元素,即字串中的字元。但是用字元指標,我們是不能修改的。

另外,宣告為陣列時,我們知道我們不能將這個陣列名賦給其他的陣列,但是如果用指標,我們則可以將該指標指向其他的字串。

用最簡單的例子來說明:

char str1="abc";

char *str2="def";

*str2='q'; //error

str1[0]='q';

前者是錯誤的,後者是正確的。

3. 宣告字元陣列的慣用法

看段**就ok了

#define str_len 10

int main()

在巨集定義處強調的是字串的大小,而在宣告字元陣列的時候,將巨集定義加1,因為要儲存」\0」。

4. 字串的輸入輸出

字串的輸出方式有兩種,printf和puts,下面的例子足以說明他們的區別:

int main()

執行結果如下:

答案就是乙個有換行,乙個沒有換行。

讀取字串也有兩個方法:scanf和gets函式。

我們來說下他們的區別:

scanf會忽略掉之前所有的空白字元,然後讀取所有字元,直到遇到空白字元位置。總之,scanf不會包含任何空白字元,包括空格,製表符等等。

gets不會忽略空白字元,讀取所有字元,直到遇到換行符為止。

舉個例子吧:

C語言之字串

字元就是符號 圖案,在計算機中以整數形式儲存,當需要顯示時會根據ascii表中的對應關係,顯示相應的符號或圖案。字元型別 char 的資料 如字元a,a,0,等 在記憶體中以對應的ascii碼存放,不同字元所對應的ascii碼見下表。計算機用乙個位元組 8個二進位制位 儲存乙個字元,例如,字元a的a...

C語言之陣列 字串

陣列 一 陣列的定義和賦值 int ages 5 每個元素佔4個位元組,整個陣列的大小為4 元素個數5 int ages 定義陣列可以不宣告長度,後邊大括號裡的元素個數決定陣列的長度 int ages a a 65,所以這個陣列的長度為65 ages 0 29 為某乙個元素賦值或替換 二 陣列的遍歷...

C語言之字串輸出

1.前導程式 1 include2 include 1提供strlen 的函式原型 3 define density 62.4 2預處理命令 4int main void 5 2.關於字串 1 字串是乙個或多個字元的序列。如 i am a student 2 c語言用空字元來標記乙個字串的結束。陣列...