【发布时间】:2020-02-18 19:32:37
【问题描述】:
我是 C 初学者,想知道我的代码有什么问题:
#include "stdio.h"
int main(void)
{
int a;
printf("Please input an integer value: ");
scanf("%d", &a);
printf("You entered: %d\n", a);
return 0;
}
我的问题是我必须在有任何 consol 输出之前输入一个值,例如,如果我输入 7,我会得到这个控制台输出:请输入一个整数值:您输入:7
我在另一台计算机上尝试了完全相同的代码,它运行得很好,我猜是缓冲区问题?但我不知道如何解决它..有什么想法吗?
【问题讨论】:
-
你需要打印一个换行符,或者刷新
stdout,因为它被缓冲了:fflush(stdout); -
谢谢克里斯蒂安,它有效!但我可以了解更多详情吗?为什么它可以在我朋友的计算机上运行,而在我的计算机上不刷新?我每次都必须这样做吗?
-
在某些环境中,stdio 缓冲区会在
scanf()或fgets()等输入函数上自动刷新,但这不是您可以依赖的。 -
好的,很清楚!谢谢大家!
-
有些系统会在输出换行符时刷新缓冲区,但你不要在
scanf之前写一个。