【发布时间】:2016-10-04 00:40:06
【问题描述】:
int main()
{
int program = 0;
while (program >= 0)
{
printf("\nChoose one of the following programs: \n\n (1) Fibonacci Sequence Calculator \n (2) Decimal and Binary Calculator \n (3) Prime Number Calculator \n \nIf you want to exit the program, press (e).\nYour choice: ");
scanf("%d", &program);
if (program == 0)
{
printf("Quitting the program...\n\n");
return 0;
}
else if(program==1)
{
printf ("FIBONACCI SEQUENCE CALCULATOR");
}
else if(program==2)
{
printf("DECIMAL AND BINARY CALCULATOR");
}
else if(program==3)
{
printf("PRIME NUMBER CALCULATOR");
}
else
{
printf("ERROR");
}
}
当用户输入除 0、1、2 和 3 以外的任何内容时,我想打印“ERROR”,但这是我输入时的结果:
- 除 0、1、2 和 3 以外的任何数字:“ERROR”(这是正确的)
- 任何字母/符号:“退出程序...”(这应该是“错误”!)
也许这可以帮助我找出问题的答案:我已经知道 %d 用于扫描整数, %c 用于扫描字符。但是当我想同时扫描它们时,我必须使用什么?
任何帮助将不胜感激:)
【问题讨论】:
-
scanf返回匹配参数的数量,在您的情况下为 0 或 1。 -
由于您使用的是
%d,如果您输入任何不能被解释为整数的内容(除了空格),scanf将不会更新program,并且旧值将保留。错误的输入也将保留在流中以供稍后再次读取。 -
scanf()返回成功扫描的字段数,并留下无法在流中解释的输入,因此您可以稍后阅读...所以您可以尝试使用%d,如果它不会返回1您可以尝试使用不同的函数或不同的说明符再次读取输入。
标签: c