原文: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讀寫次數,加大性能消耗。