所以我的问题如下。
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/