当前位置: 首页 > news >正文

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

文章目录

  • 1 关闭文件
    • 1.1 fclose()函数
      • 1.1.1 函数原型
      • 1.1.2 参数
      • 1.1.3 返回值
    • 1.2 fcloseall()函数
      • 1.2.1 函数原型
      • 1.2.2 参数
      • 1.2.3 返回值
  • 2 刷新文件
    • 2.1 缓冲区的概念
    • 2.2 缓冲区的刷新
      • 2.2.1 fflush()函数
        • 2.2.1.1 函数原型
        • 2.2.1.2 参数
        • 2.2.1.3 返回值
      • 2.2.2 flushall()函数
        • 2.2.2.1 函数原型
        • 2.2.2.2 参数
        • 2.2.2.3 返回值

1 关闭文件

1.1 fclose()函数

1.1.1 函数原型

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

int fclose( FILE *stream );

1.1.2 参数

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

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

1.1.3 返回值

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

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

C语言标准描述如下:

1. fclose returns 0 if the stream is successfully closed. _fcloseall returns the total number of streams closed. 
2. Both functions return EOF to indicate an error.

1.2 fcloseall()函数

1.2.1 函数原型

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

int fcloseall( void);

1.2.2 参数

fcloseall()函数参数为空void。

1.2.3 返回值

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

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

C语言标准描述如下:

1. fclose returns 0 if the stream is successfully closed. _fcloseall returns the total number of streams closed. 
2. Both functions return EOF to indicate an error.

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 );
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. fflush returns 0 if the buffer was successfully flushed. 
2. The value 0 is also returned in cases in which the specified stream has no buffer or is open for reading only. A return value of EOF indicates an error.

2.2.2 flushall()函数

2.2.2.1 函数原型

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

int flushall( void );
2.2.2.2 参数

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

2.2.2.3 返回值

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

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

C语言标准描述如下:

1. _flushall returns the number of open streams (input and output). 
2. There is no error return.
http://www.lryc.cn/news/222102.html

相关文章:

  • 制作吉他谱软件Guitar Pro8中文版本
  • SpringBoot整合JUnit
  • 华为取消6000万订单影响在扩大,高通嘴硬强调不受影响
  • 培训心得怎么写?CHAT帮你解决问题
  • AJAX-解决回调函数地狱问题
  • 【Mac开发环境搭建】JDK安装、多JDK安装与切换
  • C,C++,JAVA的区别与联系
  • 界面控件DevExpress WPF PDF Viewer,更快实现应用的PDF文档浏览
  • nanodet训练自己的数据集、NCNN部署到Android
  • 含泪整理的超全窗口函数:数据开发必备
  • CCF ChinaSoft 2023 论坛巡礼 | NASAC青年软件创新奖论坛
  • ES 未分片 导致集群状态飘红
  • Python - 面向现实世界的人脸复原 GFP-GAN 简介与使用
  • Xcode15 framework ‘CoreAudioTypes‘ not found
  • torch.cuda.is_available()=false的原因
  • asp.net docker-compose添加网关和网关配置
  • 论文阅读:LOGO-Former: Local-Global Spatio-Temporal Transformer for DFER(ICASSP2023)
  • 【GO】项目import第三方的依赖包
  • 【Linux基础IO篇】用户缓冲区、文件系统、以及软硬链接
  • 电脑软件:推荐一款电脑多屏幕管理工具DisplayFusion
  • 免费好用的网页采集工具软件推荐
  • 6.ELK之Elasticsearch嵌套(Nested)类型
  • RefConv: 重参数化的重新聚焦卷积(论文翻译)
  • 指令重排序
  • 【Head First 设计模式】-- 观察者模式
  • JavaWeb篇_01——JavaEE简介【面试常问】
  • QtC++与QRadioButton详解
  • 移远EC600U-CN开发板 day01
  • 【C/C++】什么是POD(Plain Old Data)类型
  • 注册虾皮买家号需要哪些资料?