2013-10-21 76 views
-4

我希望用戶輸入一個整數1,2或3.如何防止輸入小數點並使程序崩潰?如何防止用戶在c中輸入十進制值?

+1

這是一個Windows程序? Linux或Windows上的控制檯應用程序? – siride

+0

atoi()... ??? http://www.cplusplus.com/reference/cstdlib/atoi/ –

+2

顯示你到目前爲止所嘗試的 – krsteeve

回答

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'; 
} 
相關問題