【发布时间】:2012-08-10 10:19:31
【问题描述】:
我有一个非常简单的代码段,其中有一个带有 switch case 的 do while 循环,如下所示:
do {
printf("Enter Choice\n");
scanf("%d", &choice);
switch(choice) {
case 1: printf("1 selected");
break;
case 2: printf("exit");
break;
default: printf("wrong input");
break;
}
} while (choice != 2);
在这段代码中,如果我不小心输入了一个字符而不是一个数字,程序就会无限期地陷入混乱,甚至不接受输入。 我知道如果我插入,这可以纠正
if(isdigit(choice))
在进入开关盒之前。但我的问题是,为什么它首先会发生。
不应该去默认情况下再次要求输入吗?
【问题讨论】:
-
我看不出
if(isdigit(choice))怎么可能解决这个问题,因为choice是已经解释的整数输入,而不是char。 -
当您收到与您的格式规范不同的输入时,您会遇到问题,所以换句话说,不,为了解决这个问题,它必须是正确的格式。我会说接受所有内容作为字符串。这样就不会出现错误。然后,您检查输入字符串,根据需要进行转换......等等......
标签: c switch-statement