C で書かれたプログラムがあります。以下はプログラムのスニペットです。
signed char answer;
printf("----Technology Quiz----\n\n");
printf("The IPad came out in which year?\n");
printf("Year: ");
scanf("%c", &answer);
printf("\n\n");
printf("The answer you provided was: %c\n\n", answer);
これはプログラム全体ではありません。このコードの後に、ユーザーが年を推測したかどうかを検証するチェックがあります。
ご覧のとおり、signed char は -128 から 127 までの入力しか受け付けないため、ユーザーが答えを推測することはできません。これは意図的なものです。
このプログラムの問題点は、ユーザーが文字の範囲外の数字を入力すると、プログラムがただちに終了することです。プログラムは、最後に getchar() があっても、あたかも存在しないかのように動作します。どうすればこの問題を解決できますか?
編集
入力が範囲外の場合、プログラムは、ユーザーが最後に getchar() を含めるのを忘れたアプリケーションのように動作します。