C语言 FileStreaming buffer
setbuf
void setbuf ( FILE * stream, char * buffer );
Set stream buffer
- 设置文件描述符的缓冲区大小
- stream buffer是一个 block of data,在i/o操作和 physical file(文件) 之间
- output buffers,写出:数据会放在buffer区,直到填满,然后会flushed(发送给 物理文件并清空buffer区)
- input buffers,也是如此
- Stream buffers can be explicitly flushed by calling
fflush
,fclose
andfreopen
或者程序terminates normally(正常终止)会自动调用fllush
- 所有打开的文件都默认带有
buffer
- 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
- 通过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
- 设置缓冲方式(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
- 刷新缓冲区
参考:
http://www.gnu.org/software/libc/manual/html_node/I_002fO-on-Streams.html#I_002fO-on-Streams
C语言 FileStreaming buffer相关推荐
- Go 语言 bytes.Buffer 源码详解之1
转载地址:Go 语言 bytes.Buffer 源码详解之1 - lifelmy的博客 前言 前面一篇文章 Go语言 strings.Reader 源码详解,我们对 strings 包中的 Reade ...
- C语言 FileStreaming(文件流)
基础 stdio.h POSIX 国际组织来规定接口标准(不同的软件系统linux或win来加入这个标准) gun有具体的实现(gun就是unix系统C语言实现者) macros(库变量) 宏 描述 ...
- C语言环形buffer
C语言环形数组 这是一个循环缓冲区,终于写完了,指针指来指取还是很麻烦的,稍微不注意就出错了 但是思路还是挺简单的,不过对于小白的我还是用了蛮久的时间的,关键是开始没有构思好 所以出了很多问题,这是最 ...
- C语言 FileStreaming fwritefread
格式化IO 方法 描述 fprintf Write formatted data to stream (function ) 向文件格式化写入 fscanf Read formatted data f ...
- Go 语言 bytes.buffer write 相关操作
为什么80%的码农都做不了架构师?>>> // MyBuffer project main.go package mainimport ("bytes"&q ...
- C语言 FileStreaming fopenfclose
fopen FILE * fopen ( const char * filename, const char * mode ); 参数 描述 filename C字符串,文件名 mode mode 描 ...
- C语言 FileStreaming fseek
方法 描述 fgetpos Get current position in stream (function ) fsetpos Set position indicator of stream (f ...
- C语言 FileStreaming 键盘与屏幕IO
scanf scanf()第一个参数是一个都带有格式的控制串 .第二个参数是地址(address). 从键盘输入一切数据(数字.字母,还是空格.回车.Tab)都会放入缓冲区(队列),按回车后读取缓冲区 ...
- 第11章 Go语言文件处理
本章我们将带领大家深入了解一下 Go语言中的文件处理,重点在于文件而非目录或者通用的文件系统,特别是如何读写标准格式(如 XML 和 JSON 格式)的文件以及自定义的纯文本和二进制格式文件. 由于前 ...
最新文章
- Java学习笔记之:Java JDBC
- ASP.NET页面的字符编码设置
- 使用 VMControl 2.4 实现多网络的 Power 服务器捕捉和系统部署
- GitHub 发布了一款重量级产品,可直接运行代码
- REVERSE-PRACTICE-BUUCTF-22
- 剑指Offer 从尾到头打印链表
- 【剑指offer】连续子数组的最大和(未完待续。。。)
- 一大批历史精彩文章啦
- Ajax Control Toolkit 控件介绍
- Python安装学习
- javascript的caller,callee,call,apply
- 关于getX()getY()就可以获取到位置,找不到方法问题
- Eclipse汉化教程
- 英特尔边缘软件中心介绍
- bootstrop table api
- 大数据之Kafka介绍
- c语言有理数字符形式,C语言设计实现抽象数据类型有理数基本操作包括有理数的加法,减法,乘法,除法,以及求有理数的分子,分...
- Oracle获取拼音简码
- 【调剂】福建师范大学海峡创新实验室覃弦接收调剂研究生
- 转载一篇介绍 WordPress 的文章
热门文章
- linux中df和ls区别,linux系统文件大小ls、df、du命令的区别
- 微课--Python正则表达式语法与应用(83分钟)
- Python+OpenGL基本图元绘制综合演示
- 设计模式 C++外观者模式
- 给表中指定位置添加字段_利用VBA代码,轻松完成向工作表中添加指定图片到指定位置...
- html/css/js各类相对路径引用方法归类
- Tensorflow学习笔记(一)
- linux 错误信息 输出到管道,linux grep通过管道输出到head出现write error: Broken pipe错误...
- 识别产品外观的合格软件_瑞视特产品贴码字符识别检测系统介绍
- 如何在linux mysql_如何在linux下安装mysql