setbuf

void setbuf ( FILE * stream, char * buffer ); Set stream buffer

  1. 设置文件描述符的缓冲区大小
  2. stream buffer是一个 block of data,在i/o操作和 physical file(文件) 之间
  3. output buffers,写出:数据会放在buffer区,直到填满,然后会flushed(发送给 物理文件并清空buffer区)
  4. input buffers,也是如此
  5. Stream buffers can be explicitly flushed by calling fflush, fclose and freopen或者程序terminates normally(正常终止)会自动调用fllush
  6. 所有打开的文件都默认带有buffer
  7. stdin and stdout are fully buffered by default if they are known to not refer to an interactive . Otherwise, they may either be line buffered or unbuffered by default
  8. 通过setvbuf 改变缓冲方式
参数 描述
stream FILE object
buffer 存放buffer的数组
#pragma warning(disable:4996)#include<stdio.h>
#include<stdlib.h>int main()
{char buf[BUFSIZ];printf("缓冲区大小是%d字节\n", BUFSIZ);setbuf(stdout, buf);puts("hello world");  //屏幕此时没有输出,因为存在buf数组里system("pause");fflush(stdout);  //屏幕输出system("pause");return(0);
}

setvbuf

int setvbuf ( FILE * stream, char * buffer, int mode, size_t size );Change stream buffering

  1. 设置缓冲方式(Full buffering,Line buffering,No buffering)
参数 描述
stream Pointer to a FILE object
buffer User allocated buffer. Shall be at least size bytes long.如果空,会自动设置默认buffer(BUFSIZ)
mode 三种
size Buffer size, in bytes.
mode 描述
_IOFBF Full buffering,写出:buffer区间满,刷新,读入:buffer空,刷新
_IOLBF Line buffering,写出:buffer区满或碰到换行符,刷新,读入:buffer空,或换行符,刷新
_IONBF No buffering,没有缓冲区,buffer and size参数被忽略
返回 描述
成功 返回0
失败 非0
#pragma warning(disable:4996)#include<stdio.h>
#include<stdlib.h>int main()
{setvbuf(stdout, NULL, _IONBF, 512);puts("hello world"); //直接输出到屏幕,不需要刷新缓冲区system("pause");fflush(stdout);system("pause");return(0);
}

fflush

int fflush ( FILE * stream ); Flush stream

  1. 刷新缓冲区

参考:
http://www.gnu.org/software/libc/manual/html_node/I_002fO-on-Streams.html#I_002fO-on-Streams

C语言 FileStreaming buffer相关推荐

  1. Go 语言 bytes.Buffer 源码详解之1

    转载地址:Go 语言 bytes.Buffer 源码详解之1 - lifelmy的博客 前言 前面一篇文章 Go语言 strings.Reader 源码详解,我们对 strings 包中的 Reade ...

  2. C语言 FileStreaming(文件流)

    基础 stdio.h POSIX 国际组织来规定接口标准(不同的软件系统linux或win来加入这个标准) gun有具体的实现(gun就是unix系统C语言实现者) macros(库变量) 宏 描述 ...

  3. C语言环形buffer

    C语言环形数组 这是一个循环缓冲区,终于写完了,指针指来指取还是很麻烦的,稍微不注意就出错了 但是思路还是挺简单的,不过对于小白的我还是用了蛮久的时间的,关键是开始没有构思好 所以出了很多问题,这是最 ...

  4. C语言 FileStreaming fwritefread

    格式化IO 方法 描述 fprintf Write formatted data to stream (function ) 向文件格式化写入 fscanf Read formatted data f ...

  5. Go 语言 bytes.buffer write 相关操作

    为什么80%的码农都做不了架构师?>>>    // MyBuffer project main.go package mainimport ("bytes"&q ...

  6. C语言 FileStreaming fopenfclose

    fopen FILE * fopen ( const char * filename, const char * mode ); 参数 描述 filename C字符串,文件名 mode mode 描 ...

  7. C语言 FileStreaming fseek

    方法 描述 fgetpos Get current position in stream (function ) fsetpos Set position indicator of stream (f ...

  8. C语言 FileStreaming 键盘与屏幕IO

    scanf scanf()第一个参数是一个都带有格式的控制串 .第二个参数是地址(address). 从键盘输入一切数据(数字.字母,还是空格.回车.Tab)都会放入缓冲区(队列),按回车后读取缓冲区 ...

  9. 第11章 Go语言文件处理

    本章我们将带领大家深入了解一下 Go语言中的文件处理,重点在于文件而非目录或者通用的文件系统,特别是如何读写标准格式(如 XML 和 JSON 格式)的文件以及自定义的纯文本和二进制格式文件. 由于前 ...

最新文章

  1. Java学习笔记之:Java JDBC
  2. ASP.NET页面的字符编码设置
  3. 使用 VMControl 2.4 实现多网络的 Power 服务器捕捉和系统部署
  4. GitHub 发布了一款重量级产品,可直接运行代码
  5. REVERSE-PRACTICE-BUUCTF-22
  6. 剑指Offer 从尾到头打印链表
  7. 【剑指offer】连续子数组的最大和(未完待续。。。)
  8. 一大批历史精彩文章啦
  9. Ajax Control Toolkit 控件介绍
  10. Python安装学习
  11. javascript的caller,callee,call,apply
  12. 关于getX()getY()就可以获取到位置,找不到方法问题
  13. Eclipse汉化教程
  14. 英特尔边缘软件中心介绍
  15. bootstrop table api
  16. 大数据之Kafka介绍
  17. c语言有理数字符形式,C语言设计实现抽象数据类型有理数基本操作包括有理数的加法,减法,乘法,除法,以及求有理数的分子,分...
  18. Oracle获取拼音简码
  19. 【调剂】福建师范大学海峡创新实验室覃弦接收调剂研究生
  20. 转载一篇介绍 WordPress 的文章

热门文章

  1. linux中df和ls区别,linux系统文件大小ls、df、du命令的区别
  2. 微课--Python正则表达式语法与应用(83分钟)
  3. Python+OpenGL基本图元绘制综合演示
  4. 设计模式 C++外观者模式
  5. 给表中指定位置添加字段_利用VBA代码,轻松完成向工作表中添加指定图片到指定位置...
  6. html/css/js各类相对路径引用方法归类
  7. Tensorflow学习笔记(一)
  8. linux 错误信息 输出到管道,linux grep通过管道输出到head出现write error: Broken pipe错误...
  9. 识别产品外观的合格软件_瑞视特产品贴码字符识别检测系统介绍
  10. 如何在linux mysql_如何在linux下安装mysql