當我運行該函數並鍵入一個字符串時,我看到在標準輸出中打印回來的字符串。我相信我有一個緩衝區的問題,但我似乎無法弄清楚這一點。調用fgets的結果在字符串打印到標準輸出
0
A
回答
0
當您在控制檯中鍵入字符時,它們會回顯給您。當您從stdin
讀取字符時,仍會讀取這些字符。
或者,您可以將程序的輸出傳送到您自己的程序中,或將文件重定向到標準輸入。在這兩種情況下,字符不會附和道:
echo Program output | ./myprog
或:
./myprog < fileinput.txt
編輯 - 聽起來就像是一個終端問題。
你還沒有說明你使用的是什麼系統,或者你如何與它接口,但是我可以通過使用PuTTY通過SSH連接到系統來獲得這種行爲。
我改變終端設置強制「本地回聲」和「本地線路編輯」。然後,每當我按下回車鍵時,我都會迴應這一行。顯然只有其中一個應該開啓。最好是「本地回聲」。
1
當你運行它,如果你看到:
./program
input<CR>
input
<prompt>
然後你提供的代碼是不負責這樣做。使用一些調試語句或調試器來確定回聲來自哪裏,因爲這不是fgets所做的。
如果您看到:
./program
input<CR>
<prompt>
然後就是剛剛終端將如何工作。除非您禁用該功能(用於輸入密碼),否則它們會在您鍵入時回顯文本。
+0
這也回答了我的問題。我給了@paddy的答案,因爲他是第一個回答我回答的問題。 – Alex
0
這樣做的一個常見原因是在您的終端(推測這是一個仿真器)和OS終端驅動程序中都啓用了回顯功能。假設你使用Unix,如果你這樣做,問題就消失了:
stty -echo
運行你的程序之前?
相關問題
- 1. Haskell打印字符串標準輸出
- 2. 打印到標準輸出與結果之間的空間?
- 3. 打印unicode字符到標準輸出python打印錯誤的字形
- 4. 打印到標準輸出使用AppleScript
- 5. 使用HiveQL打印到標準輸出
- 6. 打印到標準輸出在sml
- 7. 打印輸出字符串
- 8. epoll_wait()塊打印到標準輸出
- 9. Objective C打印標準輸出到UIAlertView
- 10. 打印文件名到標準輸出
- 11. Django停止打印到標準輸出
- 12. Subprocess.communicate打印換行到標準輸出
- 13. 打開文件,打印到標準輸出,追加到文件,並再次打印到標準輸出
- 14. Python的打印字符串結果
- 15. 如何在ruby中將輸出打印到標準輸出時使用回調
- 16. subprocess.check_output仍然打印在標準輸出
- 17. 打印字符串結果彙編
- 18. 將結果打印輸出到文件
- 19. Python traceback.print_exc()打印到標準輸出或標準錯誤嗎?
- 20. 打印字符串流輸出指針
- 21. 在MS-DOS /程序集中將單個字符從字符串打印到標準輸出中x86-16
- 22. 在程序集x86中將字符打印到標準輸出中
- 23. MySQL查詢打印爲CSV輸出到標準輸出
- 24. 保存命令輸出沒有它打印到標準輸出
- 25. 打印輸出結果摘要在R
- 26. 服務器打印到標準輸出而不是套接字
- 27. 在標準輸出中打印數字的程序
- 28. Qt標準輸出。 cout不打印
- 29. 使用Python打印到標準輸出上的特定行
- 30. 打印輸出結果在while循環輸出不同的結果在Java azure
當你說「打印回標準輸出」時,你的意思是終端在鍵入數據時回顯數據嗎? –
@WilliamPursell,編號字符串在我輸入時顯示,但按Enter鍵後也會再次顯示。 – Alex