在C語言中的字串

2021-07-03 09:55:39 字數 1674 閱讀 3754

1.如果在定義字元陣列時不進行初始化,則陣列中各元素的值是不可預料的。

2.如果花括號中提供的初值個數(即字元個數)大於陣列長度,則按語法錯誤處理。

3.如果初值個數小於陣列長度,則只將這些字元賦給陣列中前面那些元素,其餘的元素自動定位 空字元 即'\0'

char c[10]=;   這個字元陣列一共有9個字元,但有10個空間則c[9]='\0'

char c[10]=; 這個字元陣列一共有10個字元

4.如果提供的初值個數與預訂的陣列長度相同,在定義時可以省略陣列長度,系統會自動根據初值個數確定陣列長度。

char c=;  

c的長度自動定為10,用這種方式可以不必人工去數字符的個數,尤其是在賦初值的字元個數較多時,比較方便

5.在c語言中的字串是作為字元陣列來處理的。

在實際工作中,人們關心的往往是字串的有效長度而不是字元陣列的長度。為了測定字串的實際長度,c語言規定了乙個「字串結束標誌」,即'\0',遇到'\0'表示字串結束,由它前面的字元組成字串。

系統對字串常量也自動加乙個'\0'作為結束符,

'\0'  代表  ascii碼為 0 的字元,'空操作符',即什麼也不做,用它來作為字串結束標誌不會產生附加的操作或增加有效字元,只起乙個供辨別的標誌。

6.字串陣列初始化的另外一種方式:

與 char c=;等價

但不與char c=;等價

總結:c語言中字串賦值一共有兩種方式:

1.按照字元陣列的方式賦值,char c[10]=; 即c[9]='\0'; 不滿陣列大小的剩餘空間均新增 '\0', 滿了大小正好,超出了就錯誤

不一定要有'\0',  char c[5]=;也是合法的

如果寫滿了大小,是不包括'\0'

2.按照字串賦值

3.字元陣列並不要求它的最後乙個字元為'\0',甚至可以不包括'\0'. 是否需要加'\0',完全根據需要確定。

但是在一定情況下,系統對字串常量自動加上乙個'\0',因此為了使處理方法一致,便於測定字串的實際長度,以及在程式中作相應的處理,在字元陣列也常常人為的加入乙個'\0'

4.字元陣列的輸出

printf("%s",c);   %s格式輸出字串時候,printf函式輸出項是字元陣列名,而不是陣列元素名。

scanf("%s",c);        scanf和printf都不加位址符。

還要注意的是:

char str1[5],str2[5],str3[5];

scanf("%s%s%s",str1,str2,str3);

輸入: how are you?

三個單詞分別儲存在各自的字串中。

如果是

char str[13];

scanf("%s",str);

由於系統把空格字元作為輸入的字串之間的分隔符,因此只將空格前的字元「how」送到str中,把how作為乙個字串處理,故在其後加 「\0」

在c語言中 C語言中的指標和字串

之前我們說過關於字元的一些內容,字元的原理,歸根到底就是將我們常用的一些字元根據編號整理成一張統一的表,每個字元對應著這個表裡面的乙個數值,這一過程就是字元的編碼。然而大多數時候我們根本就不會使用單個字元,比如計算機上面要輸出一句句子 hello world 這個句子裡面就是由多個字元所組成的,分別...

在C語言中的字串 二

在c語言中,單引號和雙引號的含義不一樣,有著本質的區別。字元 用單引號括起來的乙個字元代表乙個整數,乙個整數,乙個整數,重要的事情說三遍 字串 用雙引號括起來的字元,代表的是乙個指向無名陣列起始位址的指標,該陣列被雙引號內的字元及乙個額外的為 0 的字元初始化。a 是字元a,其16進製為0x61 a...

C語言中的字串

從概念上講,c語言中沒有字串型別 在c語言中使用字元陣列來模擬字串 c語言中的字串是以 0 結束的字元陣列 c語言中的字串可以分配於棧空間,堆空間或者唯讀儲存區 char s1 沒有 0 所以s1只不過是個單純的字元陣列 char s2 也是乙個字元陣列,但是最後乙個元素是 0 因此s2就成了c語言...