gpt4 book ai didi

c - 输入退出条件后陷入死循环。

转载 作者:行者123 更新时间:2023-12-02 08:31:27 25 4
gpt4 key购买 nike

我试图让这个循环运行,直到给出非数字输入。问题是当我输入一个字母退出while循环时,它进入了无限循环。它还进入第一个 if 语句并继续循环。如果有人对如何解决这个问题有任何想法,那就太好了。

int counter;
int input[100]
int num = 1
while (input[num] == 0)
{
printf("score #%d:", counter);
scanf("%d",&input[num]);

if (input[num] <= 0){
printf("you cannot use negative numbers\n");
continue;
}
if (input[num] >= 100){
printf("you cannot use numbers greater than 100\n");
continue;
}
num++;
counter++;

}

最佳答案

问题是,当您尝试使用 %d 格式读取时,如果为 scanf 提供非数字输入,则不会从中删除非数字数据缓冲区。当您的循环再次到达 scanf 时,它会获取相同的数据,并在无限循环中继续失败。

要解决此问题,请在 scanf 未读取正确数量的项目时删除非数字输入:

int readCount = scanf("%d",&input[num]);
if (readCount != 1) {
scanf("%*s");
printf("Please enter a valid number.\n");
continue;
}

请注意,您的循环的结束条件不正确,因为 num 总是超过已读取的最后一个元素。您可以这样修复它:

while (num < 100)
{
... // Read and error checks go here
if (input[num] == 0) {
break;
}
num++;
counter++;
}

关于c - 输入退出条件后陷入死循环。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26409191/

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