第13章 文件
第13章文件 本章内容 1.c文件概述 2.文件类型指钍 3.文件的打开和关闭 4.文件的读写 5.文件的定位 6.出错的检测
-2- 第13章 文件 本 章 内 容 1. C文件概述 2. 文件类型指针 3. 文件的打开和关闭 4. 文件的读写 5. 文件的定位 6. 出错的检测
第13章文件 13.1c文件概述 文件 ◆文件是存储在外部介质上的数据的集合。 ☆操作系统是以文件为单位对数据进行管理的。 程序 输出文件缓冲区 数据区 文件 输入文件缓冲区
-3- 第13章 文件 13.1 C文件概述 文件 v 文件是存储在外部介质上的数据的集合。 v 操作系统是以文件为单位对数据进行管理的。 文件 程序 数据区 输出文件缓冲区 输入文件缓冲区
第13章文件 13.1c文件概述 E文件类型 ☆从用户观点 特殊文件(标准输入输出文件或标准设备文件)。 普通文件(磁盘文件)。 ☆从操作系统的角度 每一个与主机相连的输入输出设备看作是一个文件 例如:输入文件:终端键盘,输出文件:显示屏和打印机。 ☆从数据的组织形式 ■ASCI文件(文本文件) 每一个字节放一个ASCI代码。 ≯便于对字符进行逐个处理,也便于输出字符。但一般占存 储空间较多,而且要花费转换时间。 ■二进制文件 把内存中的数据按其在内存中的存储形式原样输出到磁盘 上存放。 可以节省外存空间和转换时间,但一个字节并不对应一个 字符,不能直接输出字符形式
-4- 第13章 文件 13.1 C文件概述 文件类型 v 从用户观点 特殊文件(标准输入输出文件或标准设备文件)。 普通文件(磁盘文件)。 v 从操作系统的角度 每一个与主机相连的输入输出设备看作是一个文件。 例如:输入文件:终端键盘,输出文件:显示屏和打印机。 v 从数据的组织形式 ASCII文件(文本文件) Ø每一个字节放一个ASCII代码。 Ø便于对字符进行逐个处理,也便于输出字符。但一般占存 储空间较多,而且要花费转换时间。 二进制文件 Ø把内存中的数据按其在内存中的存储形式原样输出到磁盘 上存放。 Ø可以节省外存空间和转换时间,但一个字节并不对应一个 字符,不能直接输出字符形式
第13章文件 13.1c文件概述 C语言对文件的处理方法 缓冲文件系统 ■系统自动地在内存区为每一个正在使用的文件开辟一个缓冲 区 ■用缓冲文件系统进行的输入输出又称为高级磁盘输入输出。 ☆非缓冲文件系统 ■系统不自动开辟确定大小的缓冲区,而由程序为每个文件设 定缓冲区。 ■用非缓冲文件系统进行的输入输出又称为低级输入输出系统。 ANS|标准用缓冲文件系统来处理文本文件和二进制文件 C语言中对文件的操作是用库函数来实现的
-5- 第13章 文件 13.1 C文件概述 C语言对文件的处理方法 v 缓冲文件系统 系统自动地在内存区为每一个正在使用的文件开辟一个缓冲 区。 用缓冲文件系统进行的输入输出又称为高级磁盘输入输出。 v 非缓冲文件系统 系统不自动开辟确定大小的缓冲区,而由程序为每个文件设 定缓冲区。 用非缓冲文件系统进行的输入输出又称为低级输入输出系统。 ANSI C标准用缓冲文件系统来处理文本文件和二进制文件。 C语言中对文件的操作是用库函数来实现的
第13章文件 13.2文件类型指针 结构体文件类型FIE typedef struct shortley l /*缓冲区"满"或"空"的程度*/ uns i gnedf lags /*文件状态标志* chard /*文件描述符* uns I gnedcharho ld /*如无缓冲区不读取字符* shorts ize /*缓冲区的大小*/ uns i gnedchar* buffer;/*数据缓冲区的位置*/ uns i gnedar curp /*指针,当前的指向*/ uns i gedi stemp /*临时文件,指示器*/ shorttoken; /*用于有效性检查*/ IFILE:
-6- 第13章 文件 13.2 文件类型指针 结构体文件类型FILE typedef struct { shortlevel; /*缓冲区"满"或"空"的程度*/ unsignedflags; /*文件状态标志*/ charfd; /*文件描述符*/ unsignedcharhold; /*如无缓冲区不读取字符*/ shortbsize; /*缓冲区的大小*/ unsignedchar*buffer; /*数据缓冲区的位置*/ unsignedar*curp; /*指针,当前的指向*/ unsignedistemp; /*临时文件,指示器*/ shorttoken; /*用于有效性检查*/ }FILE;
第13章文件 13.2文件类型指针 在缓冲文件系统中,每个被使用的文件都在内存中开辟一个区域,用 来存放文件的有关信息(名字、状态、当前位置等),这些信息存放 在一个结构体变量中。 ☆FILE类型的数组 FILE f[5] ◇文件型指针变量 FILE *fp;
-7- 第13章 文件 13.2 文件类型指针 在缓冲文件系统中, 每个被使用的文件都在内存中开辟一个区域,用 来存放文件的有关信息(名字、状态、当前位置等),这些信息存放 在一个结构体变量中。 v FILE类型的数组 FILE f[5]; v 文件型指针变量 FILE *fp;
第13章文件 13.3文件的打开和关闭 文件的打开( fopen o函数) ◆调用方式: FILE *fp fp= fopen(文件名,使用文件方式); 使用文件方式 r w a ◇函数的返回值: ■正常打开则返回文件指针。 ■出错则返回0(NUL)。 文件的关闭( fclose函数) 调用形式: fclose(文件指针); 函数的返回值: 正常关闭则返回0值。 ■否则返回EOF
-8- 第13章 文件 13.3 文件的打开和关闭 文件的打开(fopen()函数) v 调用方式: FILE *fp; fp=fopen(文件名,使用文件方式); v 使用文件方式: r,w,a,+,b v 函数的返回值: 正常打开则返回文件指针。 出错则返回0(NULL)。 文件的关闭(fclose()函数) v 调用形式: fclose(文件指针); v 函数的返回值: 正常关闭则返回0值。 否则返回EOF
第13章文件 13.3文件的打开和关闭 符号 方式 含义 只读 为输入打开一个文本文件 只写 为输出打开一个文本文件 追加 向文本文件尾增加数据 bbb 只读 为输入打开一个二进制文件 只写 为输出打开一个二进制文件 追加 向二进制文件尾增加数据 r+ 读写 为读/写打开一个文本文件 w+ 读写 为读/写建立一个新的文本文件 读写 为读/写打开一个文本文件 读写 为读/写打开一个二进制文件 wbt+ 读写 为读/写建立一个新的二进制文件 ab+ 读写 为读/写打开一个二进制文件
-9- 第13章 文件 13.3 文件的打开和关闭 符号 方式 含义 " r " 只读 为输入打开一个文本文件 " w " 只写 为输出打开一个文本文件 " a " 追加 向文本文件尾增加数据 " rb" 只读 为输入打开一个二进制文件 " wb" 只写 为输出打开一个二进制文件 " ab" 追加 向二进制文件尾增加数据 " r+" 读写 为读/写打开一个文本文件 " w+" 读写 为读/写建立一个新的文本文件 " a+" 读写 为读/写打开一个文本文件 " rb+" 读写 为读/写打开一个二进制文件 " wb+" 读写 为读/写建立一个新的二进制文件 " ab+" 读写 为读/写打开一个二进制文件
第13章文件 13.3文件的打开和关闭 E几个相关的函数和符号常量 令函数exit(0)关闭所有文件 ◆符号常量NULL空值(0) ☆符号常量EOF文件结束符(-1) 函数feof(文件指针)判断文件结束否(非0结束) 10
-10- 第13章 文件 13.3 文件的打开和关闭 几个相关的函数和符号常量 v 函数exit(0) 关闭所有文件 v 符号常量NULL 空值(0) v 符号常量EOF 文件结束符(-1) v 函数feof(文件指针)判断文件结束否(非0结束)