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

九、Linux文件 - fopen函数和fclose函数讲解

目录

1.fopen函数

2.fclose函数

3.fopen函数和fclose实战


1.fopen函数

fopen fwrite fread fclose ...属于标准C库

include <stdio.h> standard io lib

open close write read 属于Linux系统调用

可移植型:fopen > open(open函数只在嵌入式平台中才可以使用,不可跨平台)

 fopen在用户态是缓存的

open在用户态是没有缓存的

打开一个文件,返回指向该文件的指针

函数原型

FILE * fopen(constchar *path , cost char *mode)
/*
* @description : 打开一个文件
* @param ‐ path : 指定文件路径,如:"./test.txt"
* @param ‐ mode :指定文件的打开方式,如下图:
* @return : 成功,返回指向该文件的文件指针; 若失败,返回 NULL
*/
注:终端输入 man fopen 即可查看函数
参数说明:第一个参数为欲打开文件的文件路径及文件名,第二个参数表示对文件的打开方式

mode有以下值:

  • r:只读方式打开,文件必须存在
  • r+:可读写,文件必须存在
  • rb+:打开二进制文件,可以读写
  • rt+:打开文本文件,可读写
  • w:只写,文件存在则文件长度清0,文件不存在则建立该文件
  • w+:可读写,文件存在则文件长度清0,文件不存在则建立该文件
  • a:附加方式打开只写,不存在建立该文件,存在写入的数据加到文件尾,EOF符保留
  • a+:附加方式打开可读写,不存在建立该文件,存在写入的数据加到文件尾,EOF符不保留
  • wb:打开二进制文件,只写 wb+:打开或建立二进制文件,可读写
  • wt+:打开或建立文本文件,可读写
  • t+:打开文本文件,可读写,写的数据加在文本末尾 ab+:打开二进制文件,可读写,写的数据加在文件末尾

由mode字符可知,上述如r、w、a在其后都可以加一个b,表示以二进制形式打开文件

返回值:

文件打开了,返回一个指向该打开文件的指针(FILE结构);文件打开失败,错误上存errorcode(错误代码)。

注意:在fopen操作后要进行判断,是否文件打开,文件真正打开了才能进行后面的读或写操作,如有错误要进行错误处理。

例如:

FILE *pfile=fopen(constchar *filename,"rb");

2.fclose函数

关闭一个文件流,使用fclose就可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区

函数原型:

int fclose(FILE*stream)
/*
* @description :关闭一个已打开的流
* @param ‐ stream :文件指针(流)
* @return : 成功,返回0; 若失败,返回EOF
*/

3.fopen函数和fclose实战

  1. 创建demo2.c 文件
  2. 实战成功

代码:

#include <stdio.h>
int main()
{FILE *fp = NULL;int nRet = 0;fp = fopen("mm","w");if(fp == NULL){printf("open failed!\n");return -1;}printf("open success1\n");nRet = fclose(fp);if(nRet != 0){printf("close failed!\n");return -2;}printf("close success1\n");return 0;
}

 

相关文章:

九、Linux文件 - fopen函数和fclose函数讲解

目录 1.fopen函数 2.fclose函数 3.fopen函数和fclose实战 1.fopen函数 fopen fwrite fread fclose ...属于标准C库 include <stdio.h> standard io lib open close write read 属于Linux系统调用 可移植型&#xff1a;fopen > open&#xff08;open函数只在嵌入…...

轨迹预测算法vectorNet调研报告

前言 传统的行为预测方法是规则的&#xff0c;基于道路结构的约束生成多个行为假设。最近&#xff0c;很多基于学习的预测方法被提出。他们提出了对于不同行为假设的进行概率解释的好处&#xff0c;但是需要重构一个新的表示来编码地图和轨迹信息。有趣的是&#xff0c;虽然高精…...

基于STM32设计的避障寻迹小车

一、前言 1.1 项目背景 根据美国玩具协会在一项研究中&#xff0c;过去几年全球玩具销售增长与GDP的世界平均水平大致相同。但全球玩具市场的内部结构已经占据了巨大的位置变化&#xff1a;传统玩具的市场份额正在下降&#xff0c;高科技电子玩具正在蓬勃发展。全球玩具市场的…...

【视觉检测】使用opencv编写一个图片缺陷检测流程

1. 导入必要的库&#xff0c;如OpenCV&#xff0c;NumPy等。 2. 使用OpenCV读取图像&#xff0c;并将其转换为灰度图像。 3. 使用OpenCV的Canny边缘检测算法检测图像中的边缘。 4. 使用OpenCV的Hough变换算法检测图像中的线条。 5. 使用OpenCV的模板匹配算法检测图像中的缺…...

3.Dockerfile 定制镜像

3. Dockerfile 定制镜像 从上一节的docker commit的学习中&#xff0c;我们可以了解到&#xff0c;镜像的定制实际上就是定制每一层所添加的配置、文件等信息&#xff0c;但是命令毕竟只是命令&#xff0c;每次定制都得去重复执行这个命令&#xff0c;而且还不够直观&#xff…...

Web基础与HTTP协议

Web基础与HTTP协议一、Web基础与HTTP概述1、域名概念二、域名服务与域名注册1、域名定义2、域名服务三、网页访问&#xff08;http、https&#xff09;1、网页概述2、网页的基本标签四、Web1、Web概述2、Web1.0 Web2.0五、HTTP协议概述1、HTTP协议简介2、HTTP协议请求总结一、W…...

【化学试剂】endo-BCN-PEG4-Pomalidomide,(1R,8S,9S)-双环[6.1.0]壬-四聚乙二醇-泊马度胺纯度95%+

一、基础产品数据&#xff08;Basic Product Data&#xff09;&#xff1a;CAS号&#xff1a;N/A中文名&#xff1a;(1R,8S,9S)-双环[6.1.0]壬-四聚乙二醇-泊马度胺英文名&#xff1a;endo-BCN-PEG4-Pomalidomide二、详细产品数据&#xff08;Detailed Product Data&#xff09…...

全板电镀与图形电镀,到底有什么区别?

衔接上文&#xff0c;继续为朋友们分享普通单双面板的生产工艺流程。 如图&#xff0c;第四道主流程为电镀。 电镀的目的为&#xff1a; 适当地加厚孔内与板面的铜厚&#xff0c;使孔金属化&#xff0c;从而实现层间互连。 至于其子流程&#xff0c;可以说是非常简单&#x…...

Zabbix 构建监控告警平台(二)--

Apache监控示例&#xff08;图形监控&#xff09;模板TemplateZabbix Items 1.Apache监控示例&#xff08;图形监控&#xff09; 1.1创建主机组 在“配置”->“主机群组”->“创建主机群组” 填入组名“webserver_test” 创建完成之后可以在“配置”->"主机群组&…...

开学季,关于校园防诈骗宣传,如何组织一场微信线上答题考试

开学季&#xff0c;关于校园防诈骗宣传&#xff0c;如何组织一场微信线上答题考试如何组织一场微信线上答题考试在线考试是一种非常节约成本的考试方式&#xff0c;考生通过微信扫码即可参加培训考试&#xff0c;不受时间、空间的限制&#xff0c;近几年越来越受企事业单位以及…...

蓝牙单点技术实现路径介绍

本文主要介绍蓝牙设备与手机一对一相连的 蓝牙单点 技术。 准备工作 系统要求&#xff1a;蓝牙使用需要安卓 4.3 以及以上版本&#xff0c;智能生活 App SDK 从安卓 4.4 开始支持。Manifest 权限&#xff1a; <uses-permission android:name"android.permission.ACCE…...

Ubuntu22.04 用 `hwclock` 或 `timedatectl` 来设置RTC硬件时钟为本地时区

Ubuntu22.04用 hwclock 或 timedatectl 来设置硬件时区为本地时区 可以用hwclock命令 sudo hwclock --localtime --systohc&#x1f446;效果等同&#x1f447; , --localtime的简写是-l ; --systohc的简写是-w sudo hwclock -l -w也可以用timedatectl命令 &#x1f446;效果…...

Node=>Express路由 学习2

1.概念 Express路由指的是客户端的请求与服务器处理函数之间的映射关系 Express路由由三部分组成 请求类型 请求URL地址 处理函数 app.METHOD ( PATH , HANDLER )根据定义的先后顺序进行匹配 请求类型和请求的URl同时匹配成功才会调用相应的处理函数 简单用法 2.模块化路由 为了…...

Android 面试三部曲——你做到了几点?

今天的干货来点轻松一点的&#xff0c;这次的分享是《面试需要哪些准备&#xff1f;》&#xff0c;主要分为三个部分&#xff1a; 面试前。面试中。面试后。 面试前 1、『工作经验中的职位要层层递进&#xff1a;初、中、高、资深级』&#x1f352; 2.投简历 你的简历必须要…...

windeployqt实现一键打包

每次发布QT程序前,都必须要在命令行环境下运行windeployqt 工具进行打包,加载相关的lib文件,才能正常运行。但是在命令行模式下,每次都要手动输入windeployqt的目录,和应用程序的位置目录,效率非常低,见下图: 那QT有没有什么好用的工具可以避免这个问题呢,认真找了一下…...

ESP32S3系列--SPI主机驱动详解(二)

一、目的 在上一篇《ESP32S3系列--SPI主机驱动详解(一)》我们介绍了ESP32S3的SPI外设的基本情况以及主机驱动的一些知识点,包括主机驱动的特点、总线的初始化、从设备的加入、传输模式分类等等。 本篇我们将从代码角度帮助大家进一步理解传输接口的一些细节问题。 二、实战 …...

51单片机15单片机 时钟芯片DS1302【更新中】

前言 现在流行的串行时钟电路很多&#xff0c;如DS1302、 DS1307、PCF8485等。这些电路的接口简单、价格低廉、使用方便&#xff0c;被广泛地采用。 本文介绍的实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路主要特点是采用串行数据传输&#xff0c;可为掉电…...

SaleSmartly(ss客服)带你了解:缩短B2B销售周期的秘诀

缩短B2B销售周期的秘诀&#xff1a;即时聊天 关键词&#xff1a;B2B 销售&#xff1b;即时沟通&#xff1b;SaleSmartly&#xff08;ss客服&#xff09; 在B2B销售中&#xff0c;时间就是一切。在某些情况下&#xff0c;买家正在积极寻找即时解决方案&#xff0c;潜在客户以多种…...

九龙证券|A股苏州板块迎来“200+”里程碑

2月10日&#xff0c;跟着裕太微登陆科创板&#xff0c;A股“姑苏板块”正式迎来第201位成员。姑苏也成为继京、沪、深、杭之后&#xff0c;第5个具有A股上市公司总数超越200家的城市。 现在&#xff0c;姑苏不仅生长为位居全国前列的“制作之都”&#xff0c;更成为资本市场高地…...

vcruntime140_1.dll无法继续执行代码,怎么解决这种问题?

经常使用电脑的人&#xff0c;可能对于这个弹出框应该不陌生&#xff0c;“vcruntime140_1.dll无法继续执行代码”&#xff0c;其实会出现这种情况&#xff0c;主要是因为缺少一个动态链接库 (DLL) 文件导致的。这个文件是 Visual C 2015 库的一部分&#xff0c;某些程序需要这…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

【WebSocket】SpringBoot项目中使用WebSocket

1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖&#xff0c;添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...