gpt4 book ai didi

c - 为什么 scanf 在输入与数字不同的字符时会导致无限循环?

转载 作者:行者123 更新时间:2023-11-30 16:10:28 27 4
gpt4 key购买 nike

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,在那一刻我首先检查它是否是一个数字,然后像许多建议的答案一样使用它,它总是回到相同的无限循环。我的问题是不同的,因为我尝试了每个答案,正如我所说,它没有帮助,没有 fflush,没有 cclear,并且在使用它之前没有检查它是否是一个数字..

最佳答案

这就是 scanf() 处理无效输入的方式。我发现您使用 isNum 检查是否已给出正确的输入,但条件中的 choose 不正确。问题是,如果您写入的内容没有被 scanf() 消耗,则会保留在缓冲区中,这就是导致无限循环的原因。您必须编写代码以便清除缓冲区,然后再次调用 scanf()

清除缓冲区的一个解决方案是这段代码:while ((getchar()) != '\n');

关于c - 为什么 scanf 在输入与数字不同的字符时会导致无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58883322/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com