我开始使用 C 语言。我使用 eclipse (juno) 作为我的 IDE 并安装了 CDT 插件。我还解压了 mingw64(GCC 编译器)。我写了一个非常简单的程序来看看它是否有效。这是我的代码:
#include <stdio.h>
int main()
{
int age;
printf("Hello, please enter your age:\n");
scanf("%d", &age);
printf("Your age is %d", age);
return 0;
}
问题是输出缓冲区填充了第一个字符串值,printf
但没有将其输出到控制台。我必须输入一个数字,然后缓冲区才会将所有数据倒入控制台,所以我看到控制台是这样的:
1
Hello, please enter your age:
Your age is 1
而不是预期的是:
Hello, please enter your age:
1
Your age is 1
现在,我发现我可以fflush(stdout)
在第一个之后使用,printf
但我不认为这个解决方案是优雅的,甚至是必要的。关于如何克服这个问题的任何想法?
编辑- 因为我在我的大学学习这个,我不能使用课程中没有学到的任何东西,所以我只能使用printf
和scanf
新编辑- 我想我已经找到了一个解释。正如我所说,我正在输出到 Eclipse 中的控制台视图。奇怪的是,如果我从 Windows 的命令行编译并运行程序,我会得到想要的结果。因此,我认为eclipse实际上是将输出写入文件并将其呈现在控制台窗口中。如何强制 eclipse 在我的运行配置中打开一个真正的命令行窗口?