C語言入門問題為什麼我已經將字串c的結尾加上了0,後面還是會出現奇怪的東西

2021-04-18 22:25:24 字數 2808 閱讀 1443

1樓:金色潛鳥

因為來你是一個一個地輸出數

源組的所有元素,包含bai沒有初du始化的元素zhi,所以會有奇怪dao符號出現。

你可以把 char a[10],b[10],c[10]; 這個宣告,放到 int main() 之前宣告,編譯器就會處理它們為全域性量,並初始化,情況就會改善。

另外,'\0' 是字串結尾符。你按 %s 輸出字串,它才起作用。與 %c 不一樣。

c語言中在字串的結尾加0還是'\0'?有區別嗎?

2樓:匿名使用者

有區別,在c中'\0'為轉義字元,為字串結束標誌。在我們輸入字串時,其實當輸入結束時,編譯器會自動加上'\0'。

3樓:匿名使用者

加'\0',是有區別,其中的'\0'為轉義字元,其ascii值為0,

而數字 0(字元型) 的ascii值為0+48=48 ,可以用printf("%d %d %d",'\0','0',0);

語句來檢視

4樓:匿名使用者

兩者bai是相同du的。

例:zhichar *str="abcd";

memset(str+3, 0, 1) ==> str="abc"

memset(str+3,'\0',1) ==> str="abc" 此二

者等價dao

但memset(str+3,'0',1) ==> str="abc0"

從另一專

個角度屬

(int)(0) = 0

(int)('\0') = 0

(int)('0') = 48

5樓:匿名使用者

一樣的,都是字串結束符。

6樓:匿名使用者

有,加'\0'後字元無消

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

7樓:

#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);}

8樓:w天使de翅膀

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

9樓:匿名使用者

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

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

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

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

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

10樓:匿名使用者

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

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

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

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

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

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

11樓:阿炳仰

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

c語言中字串,為什麼最後要加個『\0' ?

12樓:匿名使用者

'\0'一般放在字串的結束處,表示字串的結束,其是ascii值為0的字元的轉義。

在標頭檔案#include 中包含的一些字串處理函式等中,一般處理字串時,都是一'\0'作為字串的結束,如果一個字串中沒有'\0'這個結束字元,那麼這些函式將不能確定字串的結束位置在哪兒,從而引起一些不必要的錯誤。

13樓:匿名使用者

\0'在c語言中代表著字串的結束

在你不輸入'\0'的時候 字串不知道已經讀完了 還有繼續向後讀 讀一個位元組長度是?兩個位元組長度

就是燙 這是ascii值決定的 漢子是兩個位元組就不多說了 '\0'的ascii值為(0x)00有時候如果未定義可能會出現一堆燙知道出現預設的00(也就是'\0')才會停止。

14樓:匿名使用者

因為c語言中沒有字串這種資料型別,只有char字元型別,在c語言中所謂的字串其實是char陣列,陣列最後一個元素加上「\0",表示字串結束,這是一種字串的表達方式。

15樓:匿名使用者

表示字串結束,在輸出的時候輸出到這裡為止,你可以試一下在字串中間加入\0 再輸出,就只會輸出\0前面的內容。

16樓:匿名使用者

那個設計c語言編譯器的人強制規範這樣的

17樓:匿名使用者

字串結束符。 表示字串結束。 跟'\n'表示換行,差不多。

c語言列印不出負數部分,c語言問題,為什麼會輸出負數

額 我手裡的c手冊是這樣說的 rand 語法 include int rand void 功能 函式返回一個在零到rand max之間的偽隨機整數。c語言問題,為什麼會輸出負數 在你的switch語句最後都加一個default 看一下switch d switch u 如果出現error這行,說明你...

c語言第4題為什麼選b,C語言,第4題為什麼選B?

a,二維陣列定義時必須有列數,a錯 b,二維陣列可以預設行數,每列元素個數無誤,正確c,行數不對,定義是2行,但初始化有三行 d,第二行初始化不正確 希望對你有用,純手打不容易,望採納。b int 3 注意二維陣列的含義,前面個方括弧 裡的值代表的是後面第一層即最外層花括號 裡的元素的個數 注意此時...

關於C語言的問題,我是新手。新手如何入門C語言?

不大明白樓主的真正意思,我就按我對樓主問題的理解解釋了。指標變數儲存的是十六進位制記憶體地址的值,他也是一個值,為什麼叫他指標,因為他儲存的是一個地址。所謂函式的地址傳遞,也是值傳遞 地址值傳遞 如果你有一個指標不管他指向或不指向任何記憶體地址,他都有一個類似0x0012ff2c的值,所以不要把指標...