【坑坑坑坑坑】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