文件结构体类型>每个被使用的文件都在内存中有一个相应的文件信息区,用来存放文件的有关信息(如文件名、文件状态及当前读写位置等)。>这个文件信息区是一个结构体变量,该结构体变量的类型是FILE,该类型声明包版权所有@陈哲保留所有权利含在头文件stdio.h中。可以定义一个FILE指针类型的变量,然后通过它来间接访问EILE类型的文件信息区6
版 权 所 有 © 陈 哲 保 留 所 有 权 利 文件结构体类型 ➢每个被使用的文件都在内存中有一个相 应的文件信息区,用来存放文件的有关 信息(如文件名、文件状态及当前读写 位置等)。 ➢这个文件信息区是一个结构体变量,该 结构体变量的类型是FILE,该类型声明包 含在头文件stdio.h中。 ➢可以定义一个FILE指针类型的变量,然后 通过它来间接访问FILE类型的文件信息区。 6
>例如:FILE *fp1,*fp2,*fp3;fp2fp3fp1版权所有@陈暂保留所有权利文件2的文件3的文件1的文件信息区文件信息区文件信息区
版 权 所 有 © 陈 哲 保 留 所 有 权 利 ➢例如: FILE *fp1,*fp2,*fp3; 7 文件1的 文件信息区 fp1 文件2的 文件信息区 fp2 文件3的 文件信息区 fp3
打开与关闭文件>访问文件的步骤是:打开文件:为文件建立相应的文件信息区(用来存放有关文件的信息)和文件缓冲区(用来暂时存放输入输出的数据)。读写文件:以文本形式或者二进制形式读写文件中的数据。关闭文件:销毁文件信息区和文件缓冲区所占版权所有?陈暂保留所有权利用的内存。8
版 权 所 有 © 陈 哲 保 留 所 有 权 利 打开与关闭文件 ➢访问文件的步骤是: ◦打开文件:为文件建立相应的文件信息区(用 来存放有关文件的信息)和文件缓冲区(用来 暂时存放输入输出的数据)。 ◦读写文件:以文本形式或者二进制形式读写文 件中的数据。 ◦关闭文件:销毁文件信息区和文件缓冲区所占 用的内存。 8
>fopen函数用于打开文件,原型为:FILE* fopen(const char* filename, const char* mode)filename是要打开的文件名,。mode是文件访问模式(“读”还是“写”等),返回值是被打开的文件的指针,如果打开失败,返回一个空指针值NULL。>例如:常用如下方法打开一个文件:FILE* fp;if ((fp = fopen("filel","r")) == NULL)1版权所有@陈哲保留所有权利printf("cannot open this fileln");exit(0) ;1表示要打开名为“file1”的文件,文件访问模式为66 999
版 权 所 有 © 陈 哲 保 留 所 有 权 利 ➢fopen函数用于打开文件,原型为: FILE* fopen(const char* filename, const char* mode) ◦filename是要打开的文件名, ◦ mode是文件访问模式(“读”还是“写”等), ◦返回值是被打开的文件的指针,如果打开失败,返回 一个空指针值NULL。 ➢ 例如:常用如下方法打开一个文件: FILE* fp; if ((fp = fopen("file1", "r")) == NULL) { printf("cannot open this file\n"); exit(0); } 表示要打开名为“file1”的文件,文件访问模式为 “r” 。 9
>文本文件访问模式用“r”方式打开的文件只能用于从该文件读数据(输入),而不能用于向该文件写数据(输出)。打开文件时,该文件应该已存在:如果该文件不存在,打开失败。用“w”方式打开的文件只能用于向该文件写数据(输出),而不能用于从该文件读数据(输入)。如果该文件不存在,则在打开文件版权所有@陈暂保留所有权利前建立一个以指定的名字命名的文件;如果该文件已存在,则在打开文件前将该文件删去,然后重新建立一个文件。10
版 权 所 有 © 陈 哲 保 留 所 有 权 利 ➢文本文件访问模式: ◦用“r”方式打开的文件只能用于从该文件读 数据(输入),而不能用于向该文件写数据 (输出)。打开文件时,该文件应该已存在; 如果该文件不存在,打开失败。 ◦用“w”方式打开的文件只能用于向该文件写 数据(输出),而不能用于从该文件读数据 (输入)。如果该文件不存在,则在打开文件 前建立一个以指定的名字命名的文件;如果该 文件已存在,则在打开文件前将该文件删去, 然后重新建立一个文件。 10