我有一个非常简单的代码段,其中有一个做,而具有开关的情况下环路去如下:如果事故无限循环的错误输入
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'。 – 2012-08-10 10:24:11
当你输入的内容与格式规范不同时,你会遇到问题,换句话说不是,为了得到这种情况,它必须是正确的格式。我会说接受一切作为一个字符串。这样就不会出现任何错误。然后,对输入字符串进行检查,根据需要进行转换......等等...... – ChiefTwoPencils 2012-08-10 10:28:18