我希望用戶輸入一個整數1,2或3.如何防止輸入小數點並使程序崩潰?如何防止用戶在c中輸入十進制值?
-4
A
回答
3
一般來說,你想練習防守性的編程。假設用戶將輸入錯誤或惡意輸入並正確消毒。在這種情況下,這意味着假設用戶可以輸入任何內容,如果可能的話嘗試從中解析出一個int,如果不是,則給用戶一個錯誤消息,說明他們錯誤地輸入了輸入。
在代碼中,這意味着讀取線輸入的,或許與fgets()
如果使用的是沼澤標準下一個控制檯/終端應用程序,並使用像atoi()
或strtol()
的功能。這些將解析輸入字符串並返回一個整數值。如果輸入中有無效的數據,則不會將其標記。你必須自己做。這可以通過循環查找任何非數字的字符來完成。如果您發現任何問題,請向用戶輸出錯誤消息。
如果您需要任何其他詳細信息,我可以提供。但是,我不會提供一堆隨時可用的代碼。
1
除了簡單的1-2-3以外,OP沒有提供太多細節。遵循是一個簡單的解決方案
// Return 1, 2 or 3 on good input
// else return 0
int Get123() {
int c = fgetc(stdin);
if ((c < '1') || (c > '3')) {
return 0;
}
return c - '0';
}
相關問題
- 1. 防止值十進制數
- 2. 如何防止用戶在彈性域中的REST API中的整數字段中輸入十進制值java
- 3. C#功能:輸入= INT十進制值,輸出=字節的十六進制值
- 4. 在Edittext中輸入十進制值?
- 5. 將用戶的十進制輸入與c#十進制數進行比較
- 6. 防止用戶在c中的空控制檯輸入#
- 7. 如何防止用戶在C++中輸入空行
- 8. 用戶輸入十六進制到十六進制陣列
- 9. 輸入十六進制並用C++讀取十六進制
- 10. 如何防止用戶輸入?
- 11. 如何防止用戶輸入褻瀆?
- 12. 如何防止用戶輸入小數?
- 13. 防止用戶輸入URL的值
- 14. 用C將十進制值插入MySQL#
- 15. 如何防止用戶使用JQuery輸入特定值?
- 16. C#十進制用戶輸入與響應
- 17. 我怎麼把十六進制輸入數組從用戶c
- 18. 如何將用戶輸入從整數更改爲十進制
- 19. 如何獲得用戶輸入十進制格式
- 20. Android用戶輸入的十六進制字節值
- 21. C++輸入逗號和十進制
- 22. 在C++中,如何將十六進制值分配給從用戶輸入中獲取的字母/字符串?
- 23. 如何輸入兩位十進制數
- 24. 在Visual C++中將十進制值轉換爲十六進制
- 25. 將輸入視爲十六進制值
- 26. 如何防止用戶在html表單中輸入禁止的用戶名?
- 27. 如何防止用戶輸入超過TSpinEdit.MaxValue的值?
- 28. xforms:如何防止xxforms:覆蓋用戶輸入的默認值
- 29. 如何防止用戶輸入超過999的值?
- 30. 如何防止由於用戶輸入而導致值相乘?
這是一個Windows程序? Linux或Windows上的控制檯應用程序? – siride
atoi()... ??? http://www.cplusplus.com/reference/cstdlib/atoi/ –
顯示你到目前爲止所嘗試的 – krsteeve