c - printf 不打印到屏幕

标签 c cygwin stdio

如果我尝试在 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;
}

它编译(通过 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 );

关于c - printf 不打印到屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16870059/

相关文章:

c - 为什么我可以取消引用和修改 `int * const` 指针?

c - 错误 : called object ‘fopen’ is not a function or function pointer

c - 在 C 中,typedef 数组类型是公平的编码实践吗?

c - 迭代指向 K&R 中指针数组的指针

windows - 在 cygwin 的参数中调用带有分号的批处理文件

python - 在 Windows 上安装 Airflow

汇编 - 打印任意长度整数

c - 将用户输入存储在变量中

c - Sqlite通过函数传递数据库

c++ - Windows 7 上的 Cygwin G++ 链接器(ld.exe)找不到 libc.so.6 和其他库文件