定义

缓冲区是内存空间的一部分,用于缓冲输入或输出的数据。根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。

类型

缓冲区分为三种类型:全缓冲、行缓冲和不带缓冲。

1.全缓冲

在这种情况下,当填满标准I/O缓存后才会进行实际的I/O操作。典型代表是对磁盘文件的读写。

2.行缓冲

输入的字符先放入缓冲区,遇到换行符时才进行实际的I/O操作。典型代表是标准输入(stdin)和标准输出(stdout)。

3.不带缓冲

即不进行缓冲,典型代表是stderr,这样可以使得出错信息尽快显示。

大部分系统默认使用下列类型的缓存:标准出错是不带缓存的;涉及终端设备的流是行缓存的;其余为全缓存。

缓冲区的大小

如果用户没有设置缓冲区,系统会默认为标准输入输出设置缓冲区,大小通常为4096字节。这和计算机中的分页机制有关,每个页的大小为4096字节,因此通常情况下,缓冲区的大小会设置为4096字节。

缓冲区的刷新

以下情况会引发缓冲区的刷新:

1.缓冲区满时;

2.行缓冲区遇到换行符;

3.关闭文件;

4.使用特定函数刷新缓冲区。

举例

1 #include

2 #include

3 intmain() {4 printf("hello");5 int i = 0;6 for (; i < 10; i++) {7 putchar('a');8 Sleep(1000);9 }10 return 0;11 }

运行该程序,等待10s后,输出helloaaaaaaaaaa。

这是由于键盘输入是标准的行缓冲,只有遇到换行符或者程序结束后才会输出到屏幕上。

1 #include

2 #include

3 intmain() {4 printf("hello");5 fflush(stdout);6 int i = 0;7 for (; i < 10; i++) {8 putchar('a');9 Sleep(1000);10 }11 return 0;12 }

运行该程序,首先输出hello,等待10s后,继续输出aaaaaaaaaa。

这是由于fflush刷新了缓冲区,所以会首先输出hello。

参考

c语言全缓冲,C语言缓冲区 - osc_8b4n157m的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. c语言第三次作业(循环),C语言——第三次作业 - osc_kt69pvbx的个人空间 - OSCHINA - 中文开源技术交流社区...

    #作业要求一# 题目6-1 输出月份英文名 题目6-2 查找星期 题目6-3 计算最长的字符串长度 题目6-4 指定位置输出字符串 作业:C高级第三次作业(2)没有思路,知识点也没有明白,未完成. # ...

  2. %20ld c语言,C语言第二次实验报告 - osc_ldea7g3t的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.实验题目,设计思路,实现方法 第十一次作业(二维数组): 11-5 打印杨辉三角(20 分) 本题要求按照规定格式打印前N行杨辉三角. 输入格式: 输入在一行中给出N(1≤N≤10). 输出格式: ...

  3. 关联规则可视化python语言_关联规则可视化 - 猪猪daxia的个人空间 - OSCHINA - 中文开源技术交流社区...

    关联规则挖掘是一种流行的数据挖掘方法,在R语言中为扩展包arules.然而,挖掘关联规则往往导致非常多的规则,使分析师需要通过查询所有的规则才能发现有趣的规则.通过手动筛选大量的规则集是费时费力.在本 ...

  4. 方阵循环右移c语言,C语言第二次实验报告 - osc_zfz30hgc的个人空间 - OSCHINA - 中文开源技术交流社区...

    #一.实验题目,设计思路与实现方法 题目一 11-6 方阵循环右移(20 分) 本题要求编写程序,将给定n×n方阵中的每个元素循环向右移m个位置,即将第0.1.⋯.n−1列变换为第n−m.n−m+1. ...

  5. python语言折半查找_C语言折半查找 - 胡若晨的个人空间 - OSCHINA - 中文开源技术交流社区...

    /************************************************************************* > File Name: bin_searc ...

  6. 微信步数C语言程序,获取微信步数 - osc_1v2pb1nt的个人空间 - OSCHINA - 中文开源技术交流社区...

    const util = require('../../utils/util.js') Page({ /** * 页面的初始数据 */ data: { runData:[], }, /** * 生命周 ...

  7. C语言包含特殊寄存器文件ch,c语言第二次实验报告 - osc_zfz30hgc的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.实验题目,设计思路,实现方法 题目一:11-4 判断上三角矩阵 编写一个程序,判断一个矩阵是不是上三角矩阵. 问题:循环条件设置不当,导致错误的重复判断,最终导致结果错误. 题目二:12-8 删除 ...

  8. 百度音乐api+c语言,百度音乐接口api - osc_d87glhzv的个人空间 - OSCHINA - 中文开源技术交流社区...

    百度音乐全接口 http://tingapi.ting.baidu.com/v1/restserver/ting 请求方式:GET 参数处理:format=json&calback=& ...

  9. r语言npsurv_R语言常用包分类总结 - osc_mf6gua6n的个人空间 - OSCHINA - 中文开源技术交流社区...

    常用包: --数据处理:lubridata ,plyr ,reshape2,stringr,formatR,mcmc: --机器学习:nnet,rpart,tree,party,lars,boost, ...

  10. c语言实现简单环形链表,c语言实现简单链表 - 阿豪boy的个人空间 - OSCHINA - 中文开源技术交流社区...

    #include #include #define ElemType int typedef struct{ ElemType e; struct Node *next; } Node,*pNode; ...

最新文章

  1. SSM框架 mybatis-plus + spring + springmvc + redis 水果生鲜产品交易平台
  2. python for android-Python-for-Android安装笔记
  3. 《HBase企业应用开发实战》—— 2.5 停止HBase集群
  4. c语言 元组顺序随机化,为什么关系中的元组没有先后顺序且不允许有重复元组?...
  5. iOS开发必读-GitHub 上Top100 的 Objective-C 项目
  6. SpringBoot的Bean之@ConditionalOnBean与@ConditionalOnClass
  7. php phar,PHP中phar(PHP Archive)包的创建并使用
  8. 计算机网络交换机组网及虚拟局域网实验报告,计算机网络实验报告材料(虚拟局域网).doc...
  9. 原来我也可以写Android小游戏
  10. Android手机里的垃圾文件和文件夹清理
  11. 常用动画特效 - CSS实现
  12. windows域名解析服务器地址,Win10打开提示无法解析服务器DNS如何解决
  13. (白帽生存法则)常见的网站攻击方式
  14. 中小学计算机教学大纲,中小学信息技术教材教法教学大纲.doc
  15. netty(三) NioEventLoop再学习
  16. 张勇卸任淘宝董事长,戴珊接任;苹果称不送充电器已节省55万吨矿石;Windows彻底告别SMB1传输协议|极客头条
  17. python2.7安装pytorch_Pytorch如何安装,Linux安装Pytorch,OSX安装Pytorch教程
  18. 微信开发者工具 wxmi修改模版颜色_Logo设计模版与设计管理
  19. 武大博士后应聘社区社工引热议,内卷还是人各有志?
  20. 建筑业企业施工劳务资质备案申请条件及劳务分包的种类

热门文章

  1. Java类与类,类与接口,接口与接口关系
  2. Linux-服务管理命令chkconfig
  3. BAT及各大互联网公司2014前端笔试面试题:JavaScript篇
  4. 枚举基类Enum详解
  5. Appium測試APP 時,所截出來的圖是全黑的問題
  6. Ural 1043 Cover the Arc
  7. 微信小程序——风水罗盘
  8. WebService:JAX-WS实现WebService
  9. Vue数据更新视图不更新的几种解决方案
  10. C++ 调用批处理命令或者.bat(.cmd)文件或者.exe文件