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

 

http://www.lryc.cn/news/1747.html

相关文章:

  • 轨迹预测算法vectorNet调研报告
  • 基于STM32设计的避障寻迹小车
  • 【视觉检测】使用opencv编写一个图片缺陷检测流程
  • 3.Dockerfile 定制镜像
  • Web基础与HTTP协议
  • 【化学试剂】endo-BCN-PEG4-Pomalidomide,(1R,8S,9S)-双环[6.1.0]壬-四聚乙二醇-泊马度胺纯度95%+
  • 全板电镀与图形电镀,到底有什么区别?
  • Zabbix 构建监控告警平台(二)--
  • 开学季,关于校园防诈骗宣传,如何组织一场微信线上答题考试
  • 蓝牙单点技术实现路径介绍
  • Ubuntu22.04 用 `hwclock` 或 `timedatectl` 来设置RTC硬件时钟为本地时区
  • Node=>Express路由 学习2
  • Android 面试三部曲——你做到了几点?
  • windeployqt实现一键打包
  • ESP32S3系列--SPI主机驱动详解(二)
  • 51单片机15单片机 时钟芯片DS1302【更新中】
  • SaleSmartly(ss客服)带你了解:缩短B2B销售周期的秘诀
  • 九龙证券|A股苏州板块迎来“200+”里程碑
  • vcruntime140_1.dll无法继续执行代码,怎么解决这种问题?
  • 正大国际期货:外盘震荡行情的特征及突破信号的确立
  • 【ESP 保姆级教程】玩转emqx数据集成篇④ ——数据桥接之HTTP服务
  • 蓝桥杯算法训练合集十三 1.P06022.P07033.逗志芃的危机4.唯一的小可爱5.JOE的矩阵
  • 切换分支报错:Untracked Files Prevent Checkout
  • endo-BCN-PEG4-Palmitic,环丙烷环辛炔四聚乙二醇-Palmitic包装灵活
  • 多传感器融合定位十一-基于滤波的融合方法Ⅱ
  • JAVA使用poi解析execl解决数值被转为科学计数法(如:手机号、身份证号、电话、等)解决方法
  • hive中substring_index()的使用
  • LocalDateTime设置时间的年、月、日、时、分、秒、纳秒
  • C语言rand和srand用法详解
  • 安装作业