• 【C语法学习】19 -关闭和刷新文件


    1 关闭文件

    1.1 fclose()函数

    1.1.1 函数原型

    fclose():关闭指定文件流stream,函数原型如下:

    int fclose( FILE *stream );
    
    • 1

    1.1.2 参数

    fclose()函数只有一个参数stream:

    1. 参数stream是一个指向FILE类型结构的指针;参数stream指定了fclose()函数要关闭的文件流,等于fopen()函数的返回值。

    1.1.3 返回值

    fclose()函数的返回值类型为int型:

    1. 关闭成功,返回0;
    2. 关闭失败,返回EOF。

    C语言标准描述如下:

    1. On success, returns 0.
    2. On failure, returns EOF.
    
    • 1
    • 2

    1.2 fcloseall()函数

    1.2.1 函数原型

    fcloseall():关闭所有已打开的文件流,函数原型如下:

    int fcloseall( void);
    
    • 1

    1.2.2 参数

    fcloseall()函数参数为空void。

    1.2.3 返回值

    fcloseall()函数的返回值类型为int型:

    1. 关闭成功,返回关闭的文件流的个数;
    2. 关闭失败,返回EOF。

    C语言标准描述如下:

    1. On success, returns the total number of streams closed.
    2. On failure, returns EOF.
    
    • 1
    • 2

    2 刷新文件

    2.1 缓冲区的概念

    1. 创建与磁盘文件相关联的流时,会自动创建一个缓冲区,并将流与缓冲区关联起来;
    2. 缓冲区是一个内存块,相当于文件流和磁盘文件之间的接口,用于临时储存待写入文件和从文件读取的数据;
    3. 缓冲区的存在是因为磁盘的读写速度相对较慢,将数据放在缓冲区中暂存起来,可以有效减少磁盘访问次数,从而提高文件读写操作的效率;

    2.2 缓冲区的刷新

    缓冲区分为输入缓冲区和输出缓冲区:

    1. 对于输入缓冲区来说,刷新缓冲区意味着清空缓冲区中读取的文件数据;
    2. 对于输出缓冲区来说,刷新缓冲区意味着将缓冲区中中的数据写入文件。

    刷新缓冲区的方法有三种:

    1. 使用fclose()函数和fcloseall()函数关闭文件流的同时会刷新缓冲区;
    2. 程序结束时(执行到main()函数的末尾或执行了exit()函数),关闭所有流的同时并刷新所有的缓冲区;
    3. 使用fflush()函数和flushall()函数在不关闭流的情况下刷新缓冲区。

    2.2.1 fflush()函数

    2.2.1.1 函数原型

    fflush():刷新与指定流stream相关联的缓冲区,函数原型如下:

    int fflush( FILE *stream );
    
    • 1
    2.2.1.2 参数

    fflush()函数只有一个参数stream:

    1. 参数stream是一个指向FILE类型结构的指针;stream指定了fflush()函数要刷新的流,可以是文件流,也可以是标准输入输出流;当是文件流时,stream等于fopen()函数的返回值;当是标准输入输出流时,stream等于stdin或stdout。
    2.2.1.3 返回值

    fflush()函数的返回值类型为int型:

    1. 刷新成功,返回0;
    2. 刷新失败,返回EOF;

    C语言标准描述如下:

    1. Returns zero on success. 
    2. Otherwise EOF is returned and the error indicator of the file stream is set.
    
    • 1
    • 2

    2.2.2 flushall()函数

    2.2.2.1 函数原型

    fflushall():刷新与所有流相关联的缓冲区,包括标准流和文件流,函数原型如下:

    int flushall( void );
    
    • 1
    2.2.2.2 参数

    fflushall()函数的参数为空void。

    2.2.2.3 返回值

    flushall()函数的返回值类型为int型:

    1. 刷新成功,返回打开流的个数;

    C语言标准描述如下:

    1. On success, returns the number of open streams (input and output). 
    2. There is no error return.
    
    • 1
    • 2
  • 相关阅读:
    二十一、【文本工具组】
    EasyExcel
    [Linux] 进程入门
    高可用组件,Keepalived详解
    Java 接口详解
    深度剖析动态规划算法:原理、优势与实战
    金融数据库的战场,太平洋保险和OceanBase打了场胜仗
    浅谈APP自动化测试工具主要优势
    docker部署springboot、springcloud、vue项目
    大数据技术基础实验二:Linux基础——常用基本命令与文件操作
  • 原文地址:https://blog.csdn.net/XDUryan/article/details/134242419