文件缓存区

  • C语言操作文件时写完一组数据后立即刷新缓存区的方法

    ·

    前言 很多时候,为了防止程序意外结束等原因造成的数据丢失,我们需要在向文件写入一组数据以后立即刷新缓存区。比如说:在写程序LOG的时候,为了防止程序崩溃时无法记录LOG,就需要记录一条LOG就刷新一次缓存区以使其立即写入磁盘文件。 实现方法 使用C标准库提供的fflush(FILE *)函数可以很方便的实现该功能,只需传入要刷新缓存区的文件指针即可。 示例程序 #include <stdio.h> int main(void) { FILE *fp = fopen(“LOG.txt”, “w”); fprintf(fp, “hello!”);// 使用一个明显小于缓存区的字符串做测试,若大于缓存区则缓存区在满了以后会自动刷新 fflush(fp); // 立即刷新缓存区,若删除此语句则字符串不会被保存在文件中。 fp++; // 偏移文件指针到未知地址。 fclose(fp); // 由于fp指向未知地址,所以执行fclose后程序会崩溃。 return 0; } 经观察可以发现,不使用fflush()函数,字符串就不能被正确的保存在文件中。

    Read More