当前位置: 首页 > 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.

相关文章:

【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…...

制作吉他谱软件Guitar Pro8中文版本

前面提到了使用Guitar Pro制作吉他谱的步骤,除此以外,在最新的Guitar Pro 8版本中,还新增了制作简谱的功能。 在窗口右侧的乐谱中,选择简谱按钮,可以打开乐谱的简谱编辑模式。 Guitar Pro-Guitar Pro 8 win-安装包ht…...

SpringBoot整合JUnit

1.创建新项目 说明:创建springboot_04_junit项目,选择对应的版本。 2.接口类 说明:新建BookDao接口。 package com.forever.dao;public interface BookDao {public void save(); }3.实现类 说明: 新建BookDaoImpl实现类。 pa…...

华为取消6000万订单影响在扩大,高通嘴硬强调不受影响

高通公布了2023年第三季度的业绩,业绩显示营收下滑24%,净利润下滑36%,不过高通强调预计今年四季度业绩将回升,意思是说华为取消订单带来的影响较小。 一、高通处境不利已延续4年时间 2019年美国对华为采取措施,众多中国…...

培训心得怎么写?CHAT帮你解决问题

问CHAT:请写一篇入职教师的培训心得 CHAT回复:作为一名新入职的教师,我非常感谢学校给予的这次培训机会。此次培训让我收获颇丰,无论是在教学理念、教学技巧上,还是在如何与学生、家长建立良好关系方面,都有…...

AJAX-解决回调函数地狱问题

一、同步代码和异步代码 1.同步代码 浏览器是按照我们书写代码的顺序一行一行地执行程序的。浏览器会等待代码的解析和工作,在上一行完成之后才会执行下一行。这也使得它成为一个同步程序。 总结来说:逐行执行,需原地等待结果后&#xff0…...

【Mac开发环境搭建】JDK安装、多JDK安装与切换

文章目录 JDK下载与安装下载安装 配置环境变量安装多个JDK共存 JDK下载与安装 下载 Oracle官网提供了非常多个版本的JDK供下载,可以点击如下链接重定向到JDK下载页面 ORACLE官网JDK下载 安装 下面的官方文档可以点开收藏到浏览器的收藏夹,这样后续在开…...

C,C++,JAVA的区别与联系

C、C和Java是三种常见的编程语言,它们有一些区别和联系。 区别: 1. 语言类型:C是一种过程式编程语言,C是在C的基础上发展而来的面向对象编程语言,而Java是一种面向对象编程语言。 2. 语法:C语言相对较为…...

界面控件DevExpress WPF PDF Viewer,更快实现应用的PDF文档浏览

DevExpress WPF PDF Viewer控件可以轻松地直接在Windows应用程序中显示PDF文档,而无需在最终用户的机器上安装外部PDF查看器。 P.S:DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress…...

nanodet训练自己的数据集、NCNN部署到Android

nanodet训练自己的数据集、NCNN部署到Android 一、介绍二、训练自己的数据集1. 运行环境2. 数据集3. 配置文件4. 训练5. 训练可视化6. 测试 三、部署到android1. 使用官方权重文件部署1.1 下载权重文件1.2 使用Android Studio部署apk 2. 部署自己的模型【暂时存在问题】2.1 生成…...

含泪整理的超全窗口函数:数据开发必备

最近在搞一些面试和课程答辩的时候,问什么是窗口函数,知道哪些窗口函数?最多的答案就是row_number、rank、dense_rank,在问一下还有其他的吗?这时同学就蒙了,还有其他的窗口函数?其实上面的回答也只是专用窗口函数&am…...

CCF ChinaSoft 2023 论坛巡礼 | NASAC青年软件创新奖论坛

2023年CCF中国软件大会(CCF ChinaSoft 2023)由CCF主办,CCF系统软件专委会、形式化方法专委会、软件工程专委会以及复旦大学联合承办,将于2023年12月1-3日在上海国际会议中心举行。 本次大会主题是“智能化软件创新推动数字经济与社…...

ES 未分片 导致集群状态飘红

GET /_cluster/allocation/explain ALLOCATION_FAILED:由于分片分配失败而未分配。 CLUSTER_RECOVERED:由于集群恢复而未分配。 DANGLING_INDEX_IMPORTED:由于导入了悬空索引导致未分配。 EXISTING_INDEX_RESTORED:由于恢复为已关…...

Python - 面向现实世界的人脸复原 GFP-GAN 简介与使用

目录 一.引言 二.GFP-GAN 简介 1.GFP-GAN 数据 2.GFP-GAN 架构 3.GFP-GAN In Wave2Lip 三.GFPGAN 实践 1.环境搭建 2.模型下载 3.代码测试 4.测试效果 四.总结 一.引言 近期 wav2lip 大火,其通过语音驱动唇部动作并对视频质量进行修复,其中…...

Xcode15 framework ‘CoreAudioTypes‘ not found

Xcode15遇见"framework ‘CoreAudioTypes’ not found。" 可尝试移除CoreAudioTypes,添加CoreAudio。 CoreAudio是CoreAudioTypes的套壳。 CoreAudio/CoreAudioTypes.h头文件内容 /*CoreAudio/CoreAudioTypes.h has moved to CoreAudioTypes/CoreAudi…...

torch.cuda.is_available()=false的原因

1、检查是否为nvidia显卡; 2、检查GPU是否支持cuda; 3、命令行cmd输入nvidia-smi(中间没有空格),查看显卡信息,cuda9.2版本只支持Driver Version>396.26;如果小于这个值,那么你就需要更新显…...

asp.net docker-compose添加网关和网关配置

打开docker-compose.yml 添加 killsb-social-apigw:image: ${REGISTRY:-killsbdapr}/killsb-social-apigw:${TAG:-latest}build:context: .dockerfile: src/ApiGateways/SocialEnvoy/Dockerfile 在路径src\ApiGateways\SocialEnvoy 添加envoy.yaml admin:access_log_path: …...

论文阅读:LOGO-Former: Local-Global Spatio-Temporal Transformer for DFER(ICASSP2023)

文章目录 摘要动机与贡献具体方法整体架构输入嵌入生成LOGO-Former多头局部注意力多头全局注意力 紧凑损失正则化 实验思考总结 本篇论文 LOGO-Former: Local-Global Spatio-Temporal Transformer for Dynamic Facial Expression Recognition发表在ICASSP(声学顶会…...

【GO】项目import第三方的依赖包

目录 一、导入第三方包 1.执行命令 2.查看go环境变量参数 3.查看go.mod文件的变化情况 二、程序里如何import 1. import依赖包 2. 程序编写 本次学习go如果依赖第三方的包,并根据第三方的包提供的接口进行编程,这里需要使用go get命令。下面将go…...

【Linux基础IO篇】用户缓冲区、文件系统、以及软硬链接

【Linux基础IO篇】用户缓冲区、文件系统、以及软硬链接 目录 【Linux基础IO篇】用户缓冲区、文件系统、以及软硬链接深入理解用户缓冲区缓冲区刷新问题缓冲区存在的意义 File模拟实现C语言中文件标准库 文件系统认识磁盘对目录的理解 软硬链接软硬链接的删除文件的三个时间 作者…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

【kafka】Golang实现分布式Masscan任务调度系统

要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...