gpt4 book ai didi

c - 将 float 分配给整数时无限循环

转载 作者:行者123 更新时间:2023-12-04 12:51:08 24 4
gpt4 key购买 nike

拜托,我的程序有问题。每当我尝试输入一个 float 时,它就会进入无限循环。我知道输入存储为整数。 How can prevent the user from entering a float(如何过滤输入)。

为什么当输入是 float 时程序会进入死循环。

这是一个例子:

#include <stdio.h>

main()
{
int i = 0;
while(i<10){
system("cls>null");
printf("%d^2 = %d\n", i, i*i);

printf("Index: ");
scanf("%d", &i);
}
}

最佳答案

当您调用 scanf 读取数字,但输入包含与输入格式说明符不兼容的内容时,scanf 不会处理此类不正确的输入,而是将其留在缓冲。您的程序不会在输入不匹配时清除缓冲区,进入无限循环:scanf 尝试再次读取 int,发现它不存在,然后退出而不修改 。您的循环发现 i 小于 10,并再次调用 scanf

要解决此问题,请检查 scanf 是否返回了一个输入。输入正确时使用,或者使用%*[^\n]\n 说明符再次调用scanf,这意味着“读取到字符串的末尾,并丢弃输入":

if (scanf("%d", &i) != 1) {
scanf("%*[^\n]\n");
}

请注意星号 - 这意味着消耗的输入需要被丢弃,而不是写入变量。

关于c - 将 float 分配给整数时无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20593961/

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