私はisdigit()関数を使用してユーザが数字で入力したことを確認するために、 'Absoulute BeginnersのためのCプログラミング'から推測ゲームコードを書き直しています。コードをinfinteループに入れる方法を教えてください。
残りのコードは、エラーチェックの点で機能します。ユーザーが非数字で入力した瞬間、コードは無限ループに入ります。
文字列の形式で入力を服用しようと#include <stdio.h>
#include <stdlib.h>
#define NO 2
#define YES 1
main()
{
int guessGame;
guessGame = 0;
int iRandomNum = 0;
int iResponse = 0;
printf("\n\nWould you like to play \"The Guessing Game\"?\n\n");
printf("\nType '1' for Yes or '2' for No!\n\n");
scanf("%d", &guessGame);
do{
if(guessGame == YES){
iRandomNum = (rand() % 10) + 1;
printf("\nGuess a number between 1 and 10:\n\n ");
scanf("%d", &iResponse);
if(!isdigit(iResponse)){
printf("\nThank you\n");
printf("\nYou entered %d\n", iResponse);
if(iResponse == iRandomNum){
printf("\nYou guessed right\n");
printf("\nThe correct guess is %d!\n", iRandomNum);
printf("\nDo you wish to continue? \n");
printf("\nType '1' for Yes or '2' for No!\n\n");
scanf("%d", &guessGame);
} else {
printf("\n\nSorry, you guessed wrong\n");
printf("\nThe correct guess was %d!\n", iRandomNum);
printf("\n\nDo you wish to continue? \n");
printf("\nType '1' for Yes or '2' for No!\n\n");
scanf("%d", &guessGame);
}
}
else {
printf("\nYou did not enter a digit\n");
printf("\n\nPlease enter a number between 1 and 10:\n\n");
scanf("%d", &iResponse);
}
}
else {
printf("\nThe window will now close. Try again later!\n");
exit(0);
}
}while(guessGame != NO);
}
、ここに入力をお願いする必要
を入力しない場合は、バッファをフラッシュしますこれを進める? –
は 'if(isdigit(iResponse))'を 'if(isdigit(iResponse))'にしてはいけませんか?確かにそれが数字をチェックしているなら。 – davedwards
@Ben私はまだコードを踏んでいくためにデバッガを使いませんでした。私はDevC++を使ってそれを書いてコンパイルしています。しかし、残念なことに、デバッガはatmで動作していないので、私はそれを動作させるために解決策を探すのに慣れていません。何か案は? – aLoHa