Logo

郎哥编程

第49讲:文件的打开与关闭

2026-04-15 22

电脑中存储的图片、电影、动画、资料等都是以文件方式存储的,文件一般都存储在磁盘中,磁盘中的文件以目录树的方式组织起来,每一个目录就是一个存储文件的集合,目录下面又有子目录,形成层级目录树。当打开电脑查看某一盘符时,会看到盘符下有目录也有文件,其实盘符本身就是一个根目录,因此盘符下面既有目录也有文件。

C语言定义了FILE结构体来描述文件的信息,用来存放文件的文件的路径、名称,状态、缓冲区等信息。可以在stdio.h头文件里查看FILE结构体。

struct _iobuf {
        char *_ptr;  //文件输入的下一个位置
        int   _cnt;  //当前缓冲区的相对位置
        char *_base;  //文件的起始位置
        int   _flag;  //文件标志
        int   _file;  //文件的有效性验证
        int   _charbuf;  // 缓冲区状态
        int   _bufsiz;  //缓冲区大小
        char *_tmpfname;  //临时文件名
        };
typedef struct _iobuf FILE;

typedef是C语言的关键字,用来为数据类型或结构体定义一个别名。例如:FILE就是结构体 _iobuf的别名,结构体定义别名的好处是在声明结构体变量时,不需要加struct关键字。

FILE*  pFile; // 声明了一个结构体指针变量

C语言提供了fopen()和fclose()函数用来打开和关闭文件,这两个函数原型在<stdio.h>头文件内。

函数声明

FILE * fopen ( const char * filename, const char * mode );

函数以mode模式打开filename指定的文件,若文件打开成功返回文件指针,否则返回NULL值。

filename指定了要打开的文件名称,filename的数据类型为字符串,fileName也包含了文件的存储路径,存储路径可以是相对路径,也可以是绝对路径。

mode指定了文件的打开模式,也就是设定文件的打开权限。比较常用的有’r’、’r+’和’w+’模式,使用’r’模式打开的文件只能读取文件,而不能改写文件内容;使用’r+’模式打开的文件即可以读取文件,也可以写入文件;使用’w+’模式与’r+’模式基本相同,唯一不同的是,使用’w+’模式可以创建一个新的文件,如果打开的文件已存在,原有内容会被删除,因此要谨慎使用’w+’模式打开文件,防止已有文件内容被清空。

函数声明

int fclose ( FILE * stream );

关闭stream指向的文件,若文件缓冲区有待写入的内容,则被写入文件,若缓冲区内有待读取的内容,则被丢弃。stream由fopen()函数返回。

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论