c - 在 C 中用 scanf 循环

标签 c while-loop infinite-loop

所以我的问题如下。

int n=0;
while(n<=0)
    scanf("%d",&n);

这段代码进入了一个无限循环,我不知道为什么。当用户输入大于 0 的数字时,循环应该停止。

谢谢:)

最佳答案

一遍又一遍……

stdin是(通常)行缓冲 - 必须按 <enter>使终端将字符传输到您的程序。所以现在缓冲区中有一个悬空的换行符,并且 scanf()将在下一次迭代中尝试读取它,但它不是整数,因此它会失败并且不会更改变量的内容。为了解决这个问题,制作scanf()吃换行符:

scanf("%d\n", &number);

(哦,是的,n 也未初始化使用,但看起来您的代码无论如何都会进入循环,所以这不是问题。请初始化它,否则您面临其他奇怪的错误。)

关于c - 在 C 中用 scanf 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15116529/

相关文章:

c - 套接字编程中addrinfo名称的 "hints"是什么意思

C程序——结构变量数据打包和对齐

javascript - 使用 array.length 时无限循环

c - 变量前使用等号或冒号的区别

C 比较数组元素与字符串

bash 脚本 : commands after the loop are not executed if the loop condition is false

java - 打印出输入中的每个字符

c++ - 如何将输入发送到连续循环中? (C++)

读取文本文件的 C 代码未找到 EOF(文件结尾)

java - 无限的 'while loop'会不会消耗过多的资源