此问题已经在这里有了答案:
int main()
{
int choose, isNum;
printf("Choose 1,2,3,4,5,6\n");
isNum = scanf("%d",&choose);
while(choose != 0){
if(!isNum || choose > 6){
printf("Wrong option!\n");
printf("Choose 1,2,3,4,5,6\n");
isNum = scanf("%d",&choose);
continue;
}
//6 ifs checking which number have you choose and what it does..
printf("Choose 1,2,3,4,5,6\n");
isNum = scanf("%d",&choose);
}}
我从这里尝试了很多事情,例如fflash,cclear,那时候我首先检查它是否为数字,然后像建议的许多答案一样使用它,它总是回到相同的无限循环中。我的问题有所不同,因为我尝试了所有答案,而且正如我所说,它没有帮助,不充裕,不清晰,并且在使用前不检查其编号。
int main(){int select,isNum; printf(“选择1,2,3,4,5,6 \ n”); isNum = scanf(“%d”,&choose); while(选择!= 0){if(!isNum ||选择> 6){printf(“ Wrong ...
这就是scanf()
在无效输入下的工作方式。我看到您用isNum
检查了是否输入正确,但条件中的choose
不正确。关键是,如果不从scanf()
中使用,您编写的内容将保留在缓冲区中,这就是导致无限循环的原因。您必须编写代码以清除缓冲区,然后再次调用scanf()
。