【发布时间】:2020-07-11 14:58:16
【问题描述】:
我了解到 stdout 是行缓冲的,并且在以下几种情况下会自动刷新缓冲区(1)当缓冲区已满时,(2)当打印一个 \n 字符并且输出到“终端”时(例如没有被重定向到文件),(3)当程序退出时,以及(4)当程序等待输入时。但是当我在没有 \n 的情况下使用 printf ,在 while 循环中没有 fflush 时,它在每次迭代中都能正常输出,我是否误解了 printf 或 fflush 的工作原理?代码是在windows上编译和运行的,我在ubuntu机器上试过同样的代码,效果很好,请问是windows终端的问题吗?
int main(){
int a=10;
while(a--){
printf("hello world");
sleep(1);
}
return 0;
}
【问题讨论】:
-
“它工作正常”到底是什么意思?