C语言文件缓冲区

编程入门 行业动态 更新时间:2024-10-09 05:21:43

C语言文件<a href=https://www.elefans.com/category/jswz/34/1768630.html style=缓冲区"/>

C语言文件缓冲区

缓冲区的概念

ANSIC标准是采用“文件缓冲系统”处理的数据文件的,所谓文件缓冲系统是指系统自动地在内存中为程序 中每一个正在使用的文件开辟一块“文件缓冲区”。从内存向磁盘输出数据时,会先送到内存中的缓冲区,装 满缓冲区后才一起送到磁盘上。对应的,如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓 冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(程序变量等)。缓冲区的大小根 据C编译系统决定的。为了便于理解可以参考下图。

全缓冲

标准I/O库函数往普通文件读写数据时,是全缓冲的。全缓冲碰到换行符也不刷新缓冲区,即只有缓冲区满了才刷新缓冲区。

全缓冲的刷新条件:

        1.程序结束或者文件关闭时自动刷新缓冲区

        2.使用fflush等函数人为刷新缓冲区

        3.缓冲区满时自动刷新缓冲区

行缓冲

标准I/O库函数往在标准输入输出环境(stdout、stdin)输出东西时,是行缓冲的。所谓的行缓冲就是缓冲区碰到换行符的时候才刷新缓冲区。如果不刷新缓冲区,可能无法对文件执行读写操作

行缓存的刷新条件:

        1.遇到'\n'即换行符时自动刷新缓冲区

        2.程序结束或者文件关闭时自动刷新缓冲区

        3.使用fflush等函数人为刷新缓冲区

        4.缓冲区满时自动刷新缓冲区,默认1024个字节为满

无缓冲

在读写文件的时候通过系统调用I/O对文件进行读写数据。这个时候是无缓冲的,即写数据会立马进入文件,读数据会立马进入内存

全缓冲、行缓冲、无缓冲对比总结

全缓冲:我们缓存在缓冲区的东西在缓冲区满的时候,才写入磁盘或者我们调用fflush刷新缓冲区才能写入到磁盘。对于全缓冲,如果我们缓冲区没满,或者我们没有手动刷新缓存,那么缓存区的内容是不能写入到磁盘的。

行缓冲:我们标准输入、标准输出都是采用的行缓存,也就是遇到换行符的时候,才会将缓存区的东西写入到磁盘。

无缓冲:有的时候,我们希望一些内容在第一时间写入磁盘或者显示出来,比如我们显示错误信息的时候,这时候典型的例子比如标准出错,它就是直接显示出错信息,而不会先放入缓存。

通常情况下,我们需要知道的是,在缓冲区满、手动调用fflush、或者程序结束的时候,我们的缓冲区才会得到刷新,并写入磁盘。

更多推荐

C语言文件缓冲区

本文发布于:2023-11-16 02:40:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1611593.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:缓冲区   语言   文件

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!