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