我正在学习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
现在,我发现在第一个printf
后面可以使用fflush(stdout)
,但我认为这种解决方案既不优雅也不必要。你们有什么想法可以帮我解决这个问题吗?编辑 - 因为我正在学习这个课程,所以不能使用课程之外的任何东西,所以我只能使用
printf
和scanf
。新编辑 - 我想我已经找到了一个解释。正如我所说,我正在输出到Eclipse中的控制台视图。奇怪的是,如果我从Windows的命令行编译和运行程序,我得到了想要的结果。因此,我认为eclipse实际上是将输出写入文件并在控制台窗口中显示。如何强制eclipse在我的运行配置中打开一个真正的命令行窗口?
fflush()
函数是没有问题的,它们非常方便。 - Mikestdout
。 - KevinDTimmfflush
或fprintf
函数。当我在 Windows 命令行中运行 gcc 时,可以得到正确的结果,所以我怀疑是错误的 Eclipse 配置。有哪些配置需要注意吗? - Mr T.