C语言 何时刷新输出

Ray_20 2014-05-11 01:15:24
各位大大,小白我看《c primer plus》 3.7.2时有这样一个疑问


将缓冲区内容传给屏幕的情况:
<1>缓冲区满了
<2>遇到换行符
<3>需要输入的时候

于是我就写了以下代码验证了下:

#include <stdio.h>

int main(void){
printf("hello world");
return 0;
}


上述代码既没有换行,也没有需要输入,为什么还是在屏幕上打印了hello world,难道真是缓冲区满了?可是我怎么能判断缓冲区是否满了呢?
...全文
482 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-05-12
  • 打赏
  • 举报
回复
在每个最后不带\n的printf后面加fflush(stdout); 在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin); 另外请检查scanf的返回值。
lin5161678 2014-05-11
  • 打赏
  • 举报
回复
引用 5 楼 linsulinying 的回复:
用codeblock运行时,printf不加换行,并且后面加一个死循环一直不退出,也可以打印出来,请问这是为什么呢?谢谢。
原因 那里的printf 不是行缓冲
Jaydenhpj 2014-05-11
  • 打赏
  • 举报
回复
用codeblock运行时,printf不加换行,并且后面加一个死循环一直不退出,也可以打印出来,请问这是为什么呢?谢谢。
linux_hsylar 2014-05-11
  • 打赏
  • 举报
回复
你看的是什么书?刚好少了一种情况 4.程序结束时它也会把缓冲区的内容打印在屏幕上。
zybjtu 2014-05-11
  • 打赏
  • 举报
回复
printf后面都跟上fflush(stdout)处理吧
mujiok2003 2014-05-11
  • 打赏
  • 举报
回复
引用
可是我怎么能判断缓冲区是否满了呢?
不要判断。 如果你想把刷新缓冲区则是使用fflush(stdout);
mujiok2003 2014-05-11
  • 打赏
  • 举报
回复
程序退出会关闭打开的流,比如stdout。 而关闭流前其缓冲区的中内容会被刷新(flush).

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧