本篇主要介绍c语言中对文件的打开关闭操作。
1. C语言文件操作函数
C标准库中提供了一系列的函数,来操作文件。因为C库函数做了这个中间层,屏蔽掉了操作系统上对于文件的不同处理。

关于文件的常见基本操作有:
打开文件fopen():创建文件或打开文件载体(磁盘)中已有的文件关闭文件fclose():类似free,释放掉内存中与文件有关的动态资源读取文件fread():数据由文件载体(磁盘)到内存写入文件fwrite():数据由内存到文件载体(磁盘)
2. fopen:打开或创建文件
fopen的原型为:
FILE *fopen( char *filename, char *mode );
它的两个参数:
- filename:需要打开或者创建的文件的文件名
- mode:相关属性,如只读、只写、是否新建等
我们通过写出一段FILE的程序查看VS对应下的函数原型
int main(int argc, char* argv[])
{
FILE *pFile = nullptr;
}
跳转之后:FILE是_iobuf结构体变量
typedef struct _iobuf
{
void* _Placeholder;
} FILE;
其他版本VS中FILE的封装内容:

它的返回值,是一个指向FILE结构体的指针。FILE结构体,就是C库函数对文件的抽象封装,里面记录了文件各种信息。
不过我们不用了解FILE内部的细节,因为我们不会直接操作FILE结构体,而是通过FILE*指针以及各种C库函数去间接操作FILE结构体。
实例:
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[])
{
FILE* pFile = fopen("mytest.txt", "w");
char szBuff[] = "helloworld";
fwrite(szBuff, 1, strlen(szBuff), pFile);
fclose(pFile);
return 0;
}
运行结果:在源码的位置生成mytest.txt文件,内容为helloworld

2.1 fopen中的mode参数
fopen中的mode参数是一个字符串,可以是以下情况的选择:
r:只读方式打开,且文件必须已经存在,否则报错w:以只写方式创建文件,如果文件已经存在,会先删除原有文件的内容a:以附加方式打开文件,不会删除原有文件内容,而是默认将内容写在文件的末尾r+:读写方式,与r类似,不会删除原有文件w+:读写方式,与w类似,会删除原有文件a+:附加及都方式
3. fclose:关闭文件,参数为一个指向FILE结构体的指针
fclose类似free的作用,告之C库函数可以关闭已经打开的文件,并回收相关资源。
下例为进行文件关闭的规范程序,在关闭之前判断是否为无效指针,之后设置指针为NULL,防止其称为野指针。
野指针的定义为:指针地址存在,但是指针指向的是一个已经释放的资源。
//规范的关闭文件操作
if (pFile != NULL)
{
fclose(pFile);
//对指针进行赋值,否则可能造成野指针
pFile = NULL;
}
4. 学习视频地址: C语言操作文件
本文介绍了C语言中如何进行文件操作,包括使用fopen函数打开或创建文件,fclose函数关闭文件,以及fread和fwrite函数进行文件读写。详细讲解了fopen的mode参数,如'r'、'w'、'a'等模式的含义,并提供了示例代码展示文件操作的过程。同时,强调了fclose后对指针的处理以避免野指针问题。
&spm=1001.2101.3001.5002&articleId=123180838&d=1&t=3&u=2fba760fc45c4097ba6eb31364e8da6b)
2754

被折叠的 条评论
为什么被折叠?



