1
A
回答
3
對於gets
,請參見手冊頁:
BUGS
切勿使用
gets()
。因爲不知道 的數據是不可能知道的,所以有多少個字符gets()
將會讀取,並且因爲gets()
將繼續存儲 字符超過緩衝區的末尾,所以使用是非常危險的。它已被用來破壞計算機安全。改爲使用fgets()
。
puts
是好的,如果你只是想寫一個字符串到stdout
。
6
gets
在C99中被標記爲過時,並且由於該函數的安全問題而在C11中被刪除。請勿使用它,請改爲使用fgets
。作爲歷史記錄,gets
被第一個大規模互聯網蠕蟲利用(被指責):1988年inet蠕蟲病毒。
puts
功能是確定的,如果它適合您的需求。
4
gets()
在一個非常可怕的方式是從根本上不安全:它將寫入無限數量的字符到它的參數,溢出它提供的任何緩衝區。因此,它永遠不會被使用。如果您使用它,許多較新的編譯器將發出自動警告。相反,使用fgets()
,這需要一個長度參數:
char buf[...];
fgets(buf, sizeof(buf), stdin);
在另一方面,puts()
是完全罰款。它相當於printf("%s\n", x);
,有些編譯器實際上會將某些常數printf()
調用轉換爲puts()
作爲標準優化。去野外。
相關問題
- 1. 用於查詢字符串的SQL注入技術
- 2. 用於學習字符串模式的機器學習技術
- 3. 使用'我很高興'的字符串轉義 - 技術術語?
- 4. 用於獲取和顯示內容的推薦技術
- 5. 用於設置音頻文件緩存的最佳技術
- 6. 有關從Golang []字節和字符串轉換的技術
- 7. 基於字符串中的術語提取「包容」字符串
- 8. 獲取基於位置和分隔符的unix子字符串
- 9. Android根據字符串加載和播放聲音
- 10. 聲音播放和播放聲音
- 11. Android錄音,上傳和播放聲音
- 12. 從字符串創建音頻/聲音
- 13. 匹配預期字符串在技術上更有效嗎?
- 14. 從PHP類和DBMS技術創建PDO連接字符串
- 15. 正則表達式和字符串操作技術
- 16. 使用字符串相似性技術的記錄鏈接
- 17. 在java中使用的技術使字符串不可變?
- 18. 使用模式匹配技術的字符串長度
- 19. Python - Pygame - 獲取特定聲音播放
- 20. Actionscript 3:從字符串庫中播放聲音的名稱
- 21. 如何在java中使用數組或其他技術的字符串位置
- 22. 獲取字符串上的字符位置
- 23. 播放字符串數據。 (播放字符串值爲音頻)
- 24. 在iPhone上播放內置聲音
- 25. 聲音流中的詞彙識別技術有哪些?
- 26. 什麼是生成諾基亞sms聲音的技術參數?
- 27. 關於通過獲取和設置方法傳遞字符串
- 28. 你能否在技術上調用主方法中的任何字符串[]?
- 29. 獲取基於使用字符串
- 30. 設置和cplex C++音樂會技術指數
如果用「完美」表示「成熟並有緩衝區溢出的機會」('gets')。 –
如果你想在你的輸出中添加一個換行符,'puts()'很好;如果你不這樣做,請改用'fputs()'。就'gets()'而言,假設它從來不存在。它不能在惡劣的環境中安全使用 - 你應該假設你的程序在惡劣的環境中工作。 –