2013-10-08 199 views
0

我正在編寫一個程序來提示用戶輸入一個介於1和5之間的數字。如果該值大於5或小於1,我希望程序等待,直到給出適當的答案。這是我想出來的,它不起作用。我已經嘗試了一些關於網絡的不同提示,但它仍然無法正常工作。任何提示將是偉大的,謝謝。使用C輸入驗證

#include <stdio.h> 

int main() 
{ 
    int p1_move; 

    do{       
     printf("1 \n 2 \n 3 \n 4 \n 5\n"); 
     printf("Player 1, enter the number:\n"); 
     scanf("%d", &p1_move); 
    }while(p1_move >=6 || <=0);   
} 
+0

'while(p1_move> = 6 || p1_move <= 0);' – Pankrates

回答

3

你需要一個變量爲每個測試:

while(p1_move >=6 || p1_move <=0); 

你也有可能未定義行爲在這裏:

scanf("%d", &p1_move); 

您不測試輸入是否成功。如果輸入第一次失敗(例如 EOF或非整數輸入),p1_move將保持未初始化狀態。

1

您的代碼不應該編譯。

變化

while(p1_move >=6 || <=0); 

while(p1_move >=6 || p1_move <=0); 
+0

謝謝,這工作。或者,是否有辦法讓while語句說出不是1/2/3/4/5的東西?我認爲它是!1!2!3!4!5 – KThund

+0

@KThund不是真的,對於所有非零的'a','!a'結果爲'0',結果爲'1'爲零。你仍然需要單獨測試它們,比如'a!= 1 && a!= 2 && a!= 3'等。 –

+0

對不起,我不明白。我正在考慮如果有其他字符或數字1,2,3,4或5被輸入,它會重複相同的提示。是否有可能做到這一點? – KThund