我正在测试一个用 C 编写的非常基本的程序,整个程序都包含在下面。在尝试执行 TCC 生成的可执行文件时,我注意到在实际看到任何 printf() 调用的输出之前,我需要为每个连续的 fgets() 输入输入。
这非常令人困惑,因此我决定尝试在标准 Windows 控制台上运行可执行文件。它运行完美,输入和输出提示以正确的顺序显示。
但是,我注意到如果我用 GCC 编译程序,它可以在 Cygwin 编译的终端上正常工作(薄荷,虽然我用 rxvt 得到了相同的结果)。
谁能解释为什么会发生这种情况,以及如何阻止它发生?我想独立于 Cygwin 编译我的程序,同时仍然使用基于 Cygwin 的终端。
谢谢!
int main()
{
char something[12];
printf("This printf() should be outputted before you are prompted for input: ");
fgets(something, sizeof something, stdin);
printf("You entered, %s", something);
}