博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C编程中printf不加'\n'不输出

Posted on 2019-01-27 10:33  (︶O︶)  阅读(2581)  评论(0编辑  收藏  举报

有时,使用printf("a=%d",a);并不一定会输出显示,只有当在格式化输出时加上'\n'才能输出,如printf("a=%d\n",a);

由于unix上标准输入输出都是带有缓存的,一般是行缓存。对于标准输出,需要输出的数据并不是直接输出到终端上,而是首先缓存到某个地方,当遇到行刷新标志或者该缓存已满的情况下,才会把缓存的数据显示到终端设备上。ANSI C中定义换行符'\n'可以认为是行刷新

标志。所以,printf函数没有带'\n'是不会自动刷新输出流,直至缓存被填满才会刷新输出流。

下面情况下会刷新缓存: 

1 强制刷新标准输出缓存fflush(stdout); 

2 放到缓冲区的内容中包含\n; 

3 缓冲区已满; 

4 需要从缓冲区拿东西到时候,如执行scanf;