九、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实战
- 创建demo2.c 文件
- 实战成功
代码:
#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;
}