【坑坑坑坑坑】fwrite没有把数据写到文件中???


原文:https://blog.csdn.net/kuaidfkuai/article/details/45918025 

《unix环境高级编程》中介绍标准IO:

标准IO流操作读写普通文件是使用全缓冲的,默认缓冲区长度是该文件系统优先选用的IO长度(一般是4kB)。

因此当数据长度没有填满缓冲区时,在文件中是无法看到的。

  解决方法有三种:

1. fflush()。

2.fclose()。

3. 函数setvbuf()修改stream(流)的缓冲区大小。

函数setvbuf 用法:

 #include <stdio.h>

int setvbuf(FILE *stream, char *buf, int mode , size_t size);

stream:文件句柄。

buf: 替换默认缓冲区。

size:buf的大小。

mode:设置模式,

_IOFBF, 表示完全缓冲

_IOLBF, 表示线缓冲 

_IONBF, 表示无缓存  

 

注意:使用fflush或setvbuf,都会增加IO读写次数,加大性能消耗。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM