對於大多數人來說,看起來似乎是一個愚蠢的問題,但我仍然試圖確定最終答案。幾個小時前,我決定用fgets()替換項目中的所有scanf()函數,以獲得更健壯的代碼。 我瞭解到,與fgets()自動結束插入輸入字符串以「\ n」和的NULL字符,但.. 讓我們說我有這樣的事情:fgets()函數會附加超過最大長度的 n 0個字符嗎?
char user[16];
16字符數組哪些商店一個用戶名(最多15個字符,我保留NUL終止符的最後一個)。 現在的問題是:如果我插入15個字符的字符串,那麼'\ n'會在數組的最後一個單元中結束,但NUL終止符是什麼? '\ 0'是否存儲在以下內存塊中? (調用printf()函數時沒有分段錯誤意味着插入的字符串實際上是NUL終止的,對嗎?)。
的'\ N'將在這種情況下,在流中被留。它將在那裏供您下次閱讀。 – 2014-10-01 21:12:03
你的緩衝區應該聲明爲'char user [16];'。 – 5gon12eder 2014-10-01 21:14:42
恩,對不起傢伙!我的錯! :) – Atlas80b 2014-10-01 21:19:16