首页 > 学院 > 开发设计 > 正文

printf复习 --- 文件缓冲区问题

2019-11-06 06:07:21
字体:
来源:转载
供稿:网友

工作中遇到的一个问题,bug再现如下:

为什么PRintf没有输出?为什么有了/n 就能输出了?

printf /n是换行符,换行时会清空行缓存。或者手动flush  stdout。

那么缓存是什么,为什么有缓存?

参考博客: http://blog.csdn.net/zhangxuechao_/article/details/45076367   linux文件缓冲区

       上面博客解释了什么是为什么要用缓存区。缓存区的分类有: 完全缓冲和行缓冲(我觉得缓存和缓冲一个意思)

linux设备都对应一个文件,stdout是标准输出设备,是带有行缓冲的,而printf /n 会清空行缓存。再入上博客所说,行缓冲的大小是1024,所以1025的时候就会输出到stdout,对应的是屏幕设备。

参考博客 : http://blog.csdn.net/bullbat/article/details/7306178  Linux中什么是缓存,什么是块缓存,什么是页缓存。

那么在编程中,有哪些是带缓冲区的文件操作,有哪些是不带缓冲区的文件操作?

参考博客: http://blog.csdn.net/tanqiuwei/article/details/20641965

带缓冲区的文件操作是高级操作,比如fopen()

不带缓冲区的文件操作是低级操作,比如open()

应该尽可能使用带缓冲区的高级操作,同时编程时注意缓冲区,如何刷新。

那么我们如何设置缓冲区?

参考博客: http://blog.csdn.net/zhoubl668/article/details/7076324

参考博客:http://blog.csdn.net/farsightliuht/article/details/8190221    这个总结很好。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表