如果我尝试在Windows 7上的Cygwin下运行以下简单代码,
#include <stdio.h>
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;
}
Run Code Online (Sandbox Code Playgroud)
它编译(通过gcc)没有问题,但是当我尝试执行它时,第一个语句("输入第一个整数")没有打印到终端,我必须输入两个连续的数字(例如3和4)在我得到之前
3
4
Enter first integer
Enter second integer
Sum is 7
Run Code Online (Sandbox Code Playgroud)
任何人都可以向我解释这里发生了什么.这在MinGW下非常有效.
就像@thejh一样,你的流似乎是缓冲的.数据尚未写入受控序列.
您可以fflush在每次写入后调用缓冲区设置,而不是摆弄缓冲区设置,以便从缓冲区中获利,并且仍然可以明确地强制执行所需的行为/显示.
printf( "Enter first integer\n" );
fflush( stdout );
scanf( "%d", &i1 );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20582 次 |
| 最近记录: |