C語言,出了個奇怪的問題

2022-08-22 00:48:11 字數 713 閱讀 2627

1樓:

char[20]最多儲存20個字元,但是如果是要用成字串的話,最多允許存19個字串,因為輸出字串時字串的末尾必須有個終止符'\0',否則輸出不知道到哪兒字串終止,如果輸入字元個數小於20時,最後一個字元後面會儲存一個終止符。你存滿的時候終止符就沒地方儲存了。因此在輸出的時候就會產生錯誤了。

2樓:匿名使用者

如果要輸入20個字元,應該定義為char str[21];

3樓:匿名使用者

你定義成:char str[20];

只能輸入19個字元,因為作為字串,最後會加一個\0符號,該符號是字串結束標誌(ascii碼為0的字元)。

如果你想輸入20個字元,則應該定義成:char str[21];

4樓:匿名使用者

應該定義成:char str[21];

5樓:匿名使用者

你試著多輸兩個字元看看效果。

原因是這樣的:

不管你申請的陣列 str有多大,gets總是讀到行尾或者遇到eof才結束。gets會自動抹去'\n',並新增一個'\0'。

你這種現象,明顯是越界了。'\0'被新增到了第21個位置(下標是20)。

參考文獻

C語言,幫忙看看哪裡出了問題,C語言問題幫忙看看問題出在哪裡?

doa i j 1 a i j while j 2 a i 0 a i 2 你寫的這個什麼意思呢 它實際上的意思是j 2時 執行a i j 1 a i j 但你的意思可能是j 2時 執行a i 0 a i 2 這是你對do while 不瞭解造成的 再去學習下額然後你寫的思路也不對 你那樣是達不到那...

c語言的問題,C語言的一個問題

這是中國mooc上的題目吧,你的程式其實是正確的。知道為何 說 格式錯誤 了嗎?include int main 上面這個程式經驗證是可通過的。include int main 而原先我的這個程式卻不行!0分!覺得明明是同一套程式吧,他喵的我發現運算子與變數之間要空格,評分系統才認你的程式,等號兩邊...

C語言問題C語言問題,C語言問題C語言問題

include include int main b k p b k 0 puts b return 0 c語言問題c語言問題 include int main int h,m scanf d d h,m printf s num h if m 0 else printf o clock print...