我有一个用 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);
这不是整个程序。在这段代码之后,有一个检查来验证用户是否猜到了年份。
如您所见,用户永远猜不到答案,因为有符号字符只接受从 -128 到 127 的输入。这是故意的。
这个程序的问题在于,如果用户输入了超出字符范围的数字,程序就会立即退出。程序的行为就像最后没有 getchar() 一样,即使有。请问我该如何解决这个问题?
编辑
如果输入超出范围,则程序的行为类似于用户忘记在末尾包含 getchar() 的应用程序。