printf不打印到屏幕

如果我尝试在Windows 7上的Cygwin下运行以下简单代码,

#include  int main() { int i1, i2, sums; printf( "Enter first integer\n" ); scanf( "%d", &i1 ); printf( "Enter second integer\n" ); scanf( "%d", &i2 ); sums = i1 + i2; printf( "Sum is %d\n", sums ); return 0; } 

它编译(通过gcc)没有问题,但是当我尝试执行它时,第一个语句(“输入第一个整​​数”)没有打印到终端,我必须输入两个连续的数字(例如3和4)在我得到之前

 3 4 Enter first integer Enter second integer Sum is 7 

任何人都可以向我解释这里发生了什么。 这在MinGW下非常有效。

就像@thejh一样,你的流似乎是缓冲的。 数据尚未写入受控序列。

您可以在每次写入后调用fflush从缓冲区获取利润,而不是摆弄缓冲区设置,并且仍然可以明确强制执行所需的行为/显示。

 printf( "Enter first integer\n" ); fflush( stdout ); scanf( "%d", &i1 ); 

您可以尝试通过使用禁用stdout中的缓冲

 setbuf(stdout, NULL); 

似乎你的程序输出被缓冲了。 尝试明确启用行缓冲:

 setlinebuf(stdout);