第九章文件 本章的主要内容包括: ◆C语言文件概念 ◆C语言的文件操作库函数 回首页
本章的主要内容包括: C语言文件概念 C语言的文件操作库函数 第九章 文件 回首页
9.1文件基本概念 本节的主要概念包括: 。◆文件是具有名字、存储于外存的数据的集合。 ●◆操作系统管理文件的方法 ◆每个文件或目录必须有也只能有一个唯一的名字,包括盘符名、路径、 主文件名和文件扩展名4部分信息。 文件输入输出: 程序在内存中运行的过程中与外存交互主要是通过以下两种方法: (1)以文件为单位将数据写到外存中; (2)从外存中根据文件名读取文件中的数据。 将向外存写入信息称为“输出”,由外存取信息称为“输入”。 讨论C语言如何处理输入输出: 文件分类,流,设备文件,I0缓冲 C语言基本文件操作:创建(打开文件)、撤消(关闭文件)、读写(通 过流对文件的读和写)及其他辅助函数
本节的主要概念包括: 文件是具有名字、存储于外存的数据的集合。 操作系统管理文件的方法 每个文件或目录必须有也只能有一个唯一的名字,包括盘符名、路径、 主文件名和文件扩展名4部分信息。 文件输入输出: 程序在内存中运行的过程中与外存交互主要是通过以下两种方法: (1)以文件为单位将数据写到外存中; (2)从外存中根据文件名读取文件中的数据。 将向外存写入信息称为“输出” ,由外存取信息称为“输入”。 讨论C语言如何处理输入输出: 文件分类,流,设备文件,IO缓冲 C语言基本文件操作:创建(打开文件)、撤消(关闭文件)、读写(通 过流对文件的读和写)及其他辅助函数。 9.1 文件基本概念
9.2文件的使用 E0F是 stdio.h中定义的宏,它的值是-1。在文件操作 经常用来表示文件操作的结果状态。 9.2.1文件指针类型 系统为每一个使用的文件在内存中开辟一个存储区,存放文件的 有关信息,这些信息用一个结构变量保存,该结构类型的名字 是FILE。 系统为每一个打开的文件分配一个区,存放FILE结构,程序通过 FIE类型指针建立和文件的联系,进行关于文件的一切操作。 指向文件结构类型的指针叫文件指针。如FILE米fp; 通过打开文件的操作,一个文件与指针变量印建立联系,通过fp, 能够访问fp关联的文件,所有关于该文件的读写操作均通过fp 成
EOF是stdio.h中定义的宏,它的值是-1。在文件操作 经常用来表示文件操作的结果状态。 9.2.1 文件指针类型 系统为每一个使用的文件在内存中开辟一个存储区,存放文件的 有关信息,这些信息用一个结构变量保存,该结构类型的名字 是FILE。 系统为每一个打开的文件分配一个区,存放FILE结构,程序通过 FILE类型指针建立和文件的联系,进行关于文件的一切操作。 指向文件结构类型的指针叫文件指针。如 FILE *fp; 通过打开文件的操作,一个文件与指针变量fp建立联系,通过fp, 能够访问fp关联的文件,所有关于该文件的读写操作均通过fp 完成。 9.2文件的使用
9.22文件的打开和关闭 9221文件打开( fopen函数) fopen函数打开文件,返回FILE指针值。用FILE指针变量接受 fopen 返回值后,就可以通过指针进行各种文件操作。 FILE *fopen(const char *filename, const char *mode) 打开方式 "n"按读方式打开文本文件,如找不到文件则失败。 w"按写方式打开(创建)文本文件,如文件已有则丢弃原有内容。 "a"按添加方式打开或创建文本文件,在已有部分之后写。 r+读更新方式,可以对文本文件读或写。 w+写更新方式,可以对文本文件写读,如文件存在则丢弃原内容。 “a+”添加并可读方式,从文件尾接着写 讨论各种打开方式的特点和要求
9.2.2.1 文件打开(fopen函数) fopen函数打开文件,返回FILE指针值。用FILE指针变量接受fopen 返回值后,就可以通过指针进行各种文件操作。 FILE *fopen(const char *filename, const char *mode) 打开方式 : "r" 按读方式打开文本文件,如找不到文件则失败。 "w" 按写方式打开(创建)文本文件,如文件已有则丢弃原有内容。 "a" 按添加方式打开或创建文本文件,在已有部分之后写。 "r+" 读更新方式,可以对文本文件读或写。 "w+" 写更新方式,可以对文本文件写读,如文件存在则丢弃原内容。 “a+” 添加并可读方式,从文件尾接着写。 讨论各种打开方式的特点和要求。 9.2.2 文件的打开和关闭
9.22文件的打开和关闭 9222文件关闭(cose函数) 关闭文件用函数 fclose,原型是: int fclose FILE *fp) ●关闭操作使文件指针变量不再指向与该文件对应的FILE结构,从而 断开与文件的关联 关闭文件操作会引起系统对文件缓冲区的一系列操作,将输出流缓 冲区数据输出到文件;对输入流丢掉缓冲区内容;释放动态缓冲 区。操作正常返回0,否则返回EOF。如果不关闭文件,将会丢失 数据,应该养成在使用完文件后关闭文件的习惯。 个C程序能同时打开的文件数有限,文件用完后应及时关闭。程序 退出时所有文件将自动关闭
9.2.2.2 文件关闭(fclose函数) 关闭文件用函数fclose,原型是: int fclose(FILE *fp) 关闭操作使文件指针变量不再指向与该文件对应的FILE结构,从而 断开与文件的关联。 关闭文件操作会引起系统对文件缓冲区的一系列操作,将输出流缓 冲区数据输出到文件;对输入流丢掉缓冲区内容;释放动态缓冲 区。操作正常返回0,否则返回EOF。如果不关闭文件,将会丢失 数据,应该养成在使用完文件后关闭文件的习惯。 一个C程序能同时打开的文件数有限,文件用完后应及时关闭。程序 退出时所有文件将自动关闭。 9.2.2 文件的打开和关闭
9.22文件的打开和关闭 922.2文件关闭(lose函数) 文件使用的步骤如下: FILE fp fp= fopen("文件名","r"); if (fp== null( /*当文件打开失败时的处理* ./*对文件的各种操作*/ fclose (fp)
9.2.2.2 文件关闭(fclose函数) 文件使用的步骤如下: FILE *fp; fp = fopen("文件名", "r"); if (fp == NULL) { /* 当文件打开失败时的处理 */ } ... ... /* 对文件的各种操作 */ fclose(fp); 9.2.2 文件的打开和关闭
9.2.3文件输入输出函数 顺序读写是指从文件中一个接一个读写数据,仅当读写了前一个 数据后,才能读写下一个数据 顺序读写在读写数据后,文件当前指针自动跳到下一个读写位置。 标准输入输出只能进行顺序读写。 随机读写是指从文件中读写数据时可不考虑数据在文件中的位置 也就是说,可以在文件的任何位置读写。 ●随机读写在读写数据前,需要将文件当前指针移到读写位置。当 文件以读或写方式打开,文件位置指针设置在文件头,若文件 以附加方式打开,位置设置在文件末尾。 1.文件的顺序写函数 int fprintf(FILE*stream, char *format, <variable -lists) int fputs(char *string, FILE*steam) int fputc(int ch, FILE*steam ●讨论上面三个函数的用法
顺序读写是指从文件中一个接一个读写数据,仅当读写了前一个 数据后,才能读写下一个数据。 顺序读写在读写数据后,文件当前指针自动跳到下一个读写位置。 标准输入输出只能进行顺序读写。 随机读写是指从文件中读写数据时可不考虑数据在文件中的位置, 也就是说,可以在文件的任何位置读写。 随机读写在读写数据前,需要将文件当前指针移到读写位置。当 文件以读或写方式打开,文件位置指针设置在文件头,若文件 以附加方式打开,位置设置在文件末尾。 1. 文件的顺序写函数 int fprintf(FILE*stream, char *format, ) int fputs(char *string, FILE *steam) int fputc(int ch, FILE *steam) 讨论上面三个函数的用法。 9.2.3 文件输入输出函数
9.2.3文件输入输出函数 2.文件的顺序读操作函数 int fscanf(FILE *Stream, char *format, <address-list) char fgets(char *string, int n, FILE*Steam) int fgetc(FILE*steam) 讨论上面三个函数的用法 3.文件的随机读写 int fseek (FILE*stream, long offset, int fromwhere) int fread(void buf, int size, int count, FILE*stream) a int fwrite(void *buf, int size, int count, FILE*stream) e long ftell(FILe*stream) 讨论上面四个函数的用法及下面三个常量用法 SEEK SET0从文件开头 SEEK CUR1从文件指针的现行位置 SEEK END 2从文件末尾
2. 文件的顺序读操作函数 int fscanf(FILE*stream, char *format, ) char fgets(char *string, int n, FILE *steam) int fgetc(FILE *steam) 讨论上面三个函数的用法。 3. 文件的随机读写 int fseek (FILE *stream, long offset, int fromwhere) int fread(void *buf, int size, int count, FILE *stream) int fwrite(void *buf, int size, int count, FILE *stream) long ftell(FILE*stream) 讨论上面四个函数的用法及下面三个常量用法。 SEEK_SET 0 从文件开头 SEEK_CUR 1 从文件指针的现行位置 SEEK_END 2 从文件末尾 9.2.3 文件输入输出函数
9.2.3文件输入输出函数 4. feof(和 rewind(函数 int feof(FILE*stream) int rewind(File*stream) 讨论上面两个函数的用法 9.24出错处理与有关函数 使用标准错误流输出出错信息: fprintf(stderr,....) 出错信息总显示在屏幕上 标准库错误处理函数: void perror(char *s) int ferror ( FILE *stream void clearer (FIle *stream 讨论上面三个函数的用法
4. feof()和rewind()函数 int feof(FILE*stream) int rewind(FILE*stream) 讨论上面两个函数的用法。 9.2.4 出错处理与有关函数 使用标准错误流输出出错信息: fprintf(stderr, ...... ); 出错信息总显示在屏幕上 标准库错误处理函数: void perror(char *s) int ferror(FILE *stream) void clearerr(FILE *stream) 讨论上面三个函数的用法。 9.2.3 文件输入输出函数
9.3用好文件要点 文件使用的一些要点和技巧: 掌握文件操作的步骤 ●2.确定文件打开方式 →3.确定文件操作 4.注意关闭文件
文件使用的一些要点和技巧: 1.掌握文件操作的步骤 2.确定文件打开方式 3.确定文件操作 4.注意关闭文件 9.3 用好文件要点