c語言,字元陣列中最後字必須為 0 ,為什麼錯

時間 2021-08-30 09:46:49

1樓:八哥說科技

c語言中字元陣列並沒有規定最後一個字元為'\0',甚至可以不包含'\0',新增'\0'作為結束標誌是針對於c語言對字串的處理而言的,因此,字元陣列中最後一個字必須為『\0』是錯誤的。

c語言中沒有字串型別,字串是存放在字元型陣列中的。在c語言中,是將字串作為字元陣列來處理的。為了測定字串的實際長度,c語言規定了一個「字串結束標誌」,以字元'\0'作為結束標誌 。

例如:char a[8]=;把8個字元依次分別賦給c[0]~c[7]這8個元素。這樣的字元陣列長度為8,並沒有在最後新增'\0'符號,但其初始化是完全正確的。

2樓:英雄no無敵

不是字元陣列中最後一個字元必須為'\0',如果字元陣列中存放的是一個字串,則最後一個字元應當'\0','\0'是結束符號,這樣當輸出這個字串時,只須輸入陣列名就可以,輸出函式會自動輸出陣列中的字元,直到遇到'\0'為止,否則你就要利用迴圈自己將字元一個一個的輸出,而且還要判斷該字元是不是所需要的字元,明白了麼?

3樓:

'\0'是為了關閉字串,如果不關閉,那麼就要爆掉!

所以開陣列時要開大!

關於c語言字元陣列的賦值最後自動新增『\0』問題

4樓:

#include

void main()

;printf("%s\n",c);

c[0]='a'; // 僅對bai第一位元du素賦zhi值,它並不影響dao

其後面的版字元權

printf("%s\n",c);

c[1]='b';  // 同理

printf("%s\n",c);}

5樓:w天使de翅膀

可以正常讀出來的,\0只是一個相當於識別符號的東西,用來判斷已經到達字串的末尾

6樓:匿名使用者

c[5]只有5個空間無法完全容納字串"hello",因為這個字串需要佔用6個字元位置。

所謂自動加'\0'的問題是內:你寫在雙

容引號中的,編譯程式會認為是字串,會自動為你新增上一個字串結尾符號0,而不是執行時新增的。

如果你用debug方式執行程式,除錯環境自動會把你開設的char a[5];進行初始化0的工作,這時你再將第1位初始化時,後面的0仍存在就好象字串結尾已經存在了。如果非debug執行則沒有這個初始化工作。

如果你用字元方式初始化應當寫:char c[6]=;

7樓:匿名使用者

char c[5] = ; 有兩個問題

(1)語法不對,應該是 char c[5]="hello"

(2)有錯誤, char c[5]="hello",字串終止符溢位了

2.  但是我如果定義char a[5];給前一回位賦初值,答

則第二到第五位會自動賦值'\0'

// 沒錯,但注意是陣列第1到第4項自動賦值為0但後面我又給第三位到第五位賦值了,這個陣列是不是就不能正常讀出了// 需要看你賦什麼值,如果是非零值、並且你把陣列a當字串使用,則結果無法預料(無法確定終止符);如果你把陣列a只是當陣列使用,則不會有讀取問題

8樓:阿炳仰

可以正常讀出 就是隻能讀出 第一位

c語言中字元陣列結束標誌為0和'\0'有區別麼?

9樓:真淑敏軍秋

'\0'

對應的二進位制位元組是:

00000000

'0'對應的二進位制位元組是:00110000這就是為什麼。因為這完全是兩碼事,不同的東西。

10樓:依染紅雀

區別在於,對字元的操作與數值不同,字元陣列可以當作字串來對待(當然,作為字串,要注意字串的結束符號)

字元陣列也可以當作整型陣列使用,只是表達的範圍比較小而已。

總得來說,字元陣列可以作為字串來操作,這個用途比較大。

如果拋開這個不說,那麼字元陣列,整數陣列、實數陣列除了表達範圍不同外,使用上一樣。

C語言字元陣列不賦初值是預設為 0 還是隨機值

普通陣列沒有賦初值,預設的陣列元素值是隨機數,不是0。如果在定義陣列時,資料型別前面加上關鍵字static,陣列變成了靜態陣列 或者把陣列定義在函式的外面,成為全域性變數陣列,這時陣列元素的值自動賦值為0。例子 includeint main void int m 0 static int n in...

c語言填空若字元陣列定義為char aancdn

金色潛鳥 char a ancdn 0 字串長度為 5。因為 字串長度 算到 字串結束符 以前,不包括 字串結束符。例如 123456 089abcd 0 字串長度計算到第一次遇到的結束符 0,長度是 6,後面不算。char a ancdn 0 佔記憶體 7 個位元組,雖然你加入了一個結束符,但 因...

在C語言中,a為0時,表示式a 0和a 0的值為 真 嗎為什麼

a 0 是一個賦值語句 a 0是一個邏輯表示式,a為0時,說明的是後者。 一個等號和兩個等號意義不一樣的,第一個 是賦值,a的值會變,第二個 是判斷,他是邏輯運算子,意思是 如果a等於0是真的話,一般會在if等帶選擇性的語句 現。 不太明白你的問題。a 0是賦值操作 a 0是判斷 a是否等於0 的表...