我有這樣的代碼:
char arch[80];
fgets (arch, sizeof(arch), stdin);
當我訪問的arch
值它顯示的值I從stdin
進入,然後是一個訊問標記,爲什麼這發生?
我有這樣的代碼:
char arch[80];
fgets (arch, sizeof(arch), stdin);
當我訪問的arch
值它顯示的值I從stdin
進入,然後是一個訊問標記,爲什麼這發生?
我的猜測是它代表了\n
行終止符,無論您用什麼來檢查arch
的值。 SO有很多有關線路終端的問題,我相信你可以很容易地找到的的方式來處理它。
fgets()
存儲其後的換行符:
與fgets()從流至多一個小於大小的字符讀取和 並將它們存儲到緩衝器由s指向。讀取在 EOF或換行符後停止。如果讀取換行符,則將其存儲到緩衝區中。 '\ 0'存儲在緩衝區中的最後一個字符之後。
如果您在某種調試器中檢查變量,可能是換行符顯示爲「?」,或者是「詢問標記」所表達的任何內容。
什麼是SO?我認爲fgets會比scanf更好...我試圖從標準輸入中獲取文件名,我不想要'?'在上面。 – cracq
SO是堆棧溢出。如果你知道它在那裏,剝掉換行符就像'arch [strlen(arch)-1] = 0'一樣簡單。 –