【发布时间】:2012-10-13 15:48:10
【问题描述】:
我开始使用 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),但我认为这个解决方案并不优雅,甚至没有必要。关于如何克服这个问题的任何想法?
编辑 - 因为我在大学里学习这个,所以我不能使用课程中没有学到的任何东西,所以我可以只使用@987654328 @和scanf
新编辑 - 我想我已经找到了对此的解释。正如我所说,我正在输出到 Eclipse 中的控制台视图。奇怪的是,如果我从 Windows 的命令行编译并运行程序,我会得到想要的结果。因此,我认为eclipse实际上是将输出写入文件并将其呈现在控制台窗口中。如何强制 eclipse 在我的运行配置中打开一个真正的命令行窗口?
【问题讨论】:
-
旁注,
fflush()没有任何问题,它们非常方便 -
这是非常奇怪的行为,\n 应该刷新
stdout -
这不是重复的,因为我不能使用
fflush或fprintf函数。当我从 Windows 中的命令行运行 gcc 时,我得到了正确的结果,所以我怀疑它是 eclipse 配置错误的情况。任何想法哪些配置?
标签: c eclipse gcc printf scanf