C语言程序设计 第10章文件 八>此枝大营计算机鼎
1 C 语言程序设计 北京科技大学 计算机系 第10章 文 件
第10章文件 10.1文件的概念 10.2文本文件的读写 10.3二进制文件的读写 2021/2/20
2021/2/20 2 第10章 文件 10.1 文件的概念 10.2 文本文件的读写 10.3 二进制文件的读写
101文件的概述 10.1.1文件和文件指针 1.什么是文件 ●文件:存储在外部存储介质上相关数据的集合。 例如:程序文件中保存着程序,数据文件中保存着数据。 C C语言的源程序文本文件 * OBJ 目标文件 二进制文件 。EXE 可执行文件 二进制文件 文件的存储特性 文件是一个有序的数据序列。C语言把文件作 为一个字符(字节)序列处理,对文件的存取是 以字符(字节)为单位进行的。 2021/2/20
2021/2/20 3 ⚫ 文件:存储在外部存储介质上相关数据的集合。 例如:程序文件中保存着程序,数据文件中保存着数据。 *.C C语言的源程序 文本文件 *.OBJ 目标文件 二进制文件 *.EXE 可执行文件 二进制文件 ⚫ 文件的存储特性 文件是一个有序的数据序列。C语言把文件作 为一个字符(字节)序列处理,对文件的存取是 以字符(字节)为单位进行的。 10.1 文件的概述 10.1.1 文件和文件指针 1. 什么是文件
101文件的概述 10.1.1文件和文件指针 1.什么是文件 ●设备文件 在C语言中,“文件”的概念被进一步扩大 把每台与主机相连的输入输出设备都看作是一个 文件。即把实际的物理设备抽象为逻辑文件,它 们被称为设督文件 ●对外部设备的输入输出就是对设备文件的 读写。 2021/2/20
2021/2/20 4 ⚫ 设备文件 在C语言中, “文件”的概念被进一步扩大, 把每台与主机相连的输入输出设备都看作是一个 文件。即把实际的物理设备抽象为逻辑文件,它 们被称为设备文件。 ⚫ 对外部设备的输入输出就是对设备文件的 读写。 10.1 文件的概述 10.1.1 文件和文件指针 1. 什么是文件
101文件的概述 10.1.1文件和文件指针 2.文件的种类 按文件存储数据的形式 ASCI文件(或称文本文件) ASCI码文件中每个字节存放一个ASCI代码,代表 个字符,此种存储形式便于输出显示,在D0S操作系统 下可以直接阅读 二进制文件 二进制文件中的数据是按照在内存中的二进制存储 格式存放的,此种存储形式节省存储单元。二进制文件 在D0S操作系统下不能直接阅读。 2021/2/20
2021/2/20 5 ⚫ 按文件存储数据的形式 ➢ ASCII文件(或称文本文件) ASCII码文件中每个字节存放一个ASCII代码,代表 一个字符,此种存储形式便于输出显示,在DOS操作系统 下可以直接阅读。 ➢ 二进制文件 二进制文件中的数据是按照在内存中的二进制存储 格式存放的,此种存储形式节省存储单元。二进制文件 在DOS操作系统下不能直接阅读。 10.1 文件的概述 10.1.1 文件和文件指针 2. 文件的种类
101文件的概述 10.1.1文件和文件指针 2.文件的种类 例如将整数1949分别存储在这两种数据文件中。 ASCI文件:ASCⅢ码 0011101101014个字节 9 4 二进制文件:补码 00010011012个字节 2021/2/20
2021/2/20 6 例如将整数1949分别存储在这两种数据文件中。 ASCII文件:ASCII码 二进制文件:补码 占用4个字节 占用2个字节 10.1 文件的概述 10.1.1 文件和文件指针 2. 文件的种类 00110001 00111001 00110100 00111001 '1' '9' '4' '9' 00000111 10011101
101文件的概述 10.1.1文件和文件指针 2.文件的种类 ●按照对文件的处理方式 缓冲文件 83年以后 ANSI C标准中取消了非缓冲文件 系统,对文本文件和二进制文件均采用缓冲文 件系统进行处理。 非缓冲文件 利用非缓冲文件系统处理的文件称为非缓冲文件。 系统处理非缓冲文件时,不为文件开辟缓冲区,需要程 序员自行设计并管理缓冲区。 2021/2/20
2021/2/20 7 ⚫ 按照对文件的处理方式 ➢ 缓冲文件 利用缓冲文件系统处理的文件称为缓冲文件。系统 处理方法是在内存中为每个正在使用的缓冲文件开辟一 个缓冲区,其大小是512个字节。对文件读写数据都通过 缓冲区进行。 ➢ 非缓冲文件 利用非缓冲文件系统处理的文件称为非缓冲文件。 系统处理非缓冲文件时,不为文件开辟缓冲区,需要程 序员自行设计并管理缓冲区。 83年以后ANSI C标准中取消了非缓冲文件 系统,对文本文件和二进制文件均采用缓冲文 件系统进行处理。 10.1 文件的概述 10.1.1 文件和文件指针 2. 文件的种类
101文件的概述 8 10.1.1文件和文件指针 3.缓冲文件和文件指针 系统对文件的处理过程就是 对文件进行输入/输岀操作的过 程 程序区 从文件读数据时,先一次性 从磁盘文件中读取一批数据到缓 数据区 冲区,然后再从缓冲区逐个将数 输 输出输 磁盘文件 据送入变量 出 文件 向文件写数据时,也是先将 缓冲区 输入 变量中数据送到缓冲区,待缓冲 内存 外存 区装满后,再一起存到磁盘文件图102系统对缓冲文件的处理 中 2021/2/20
2021/2/20 8 系统对文件的处理过程就是 对文件进行输入/输出操作的过 程。 从文件读数据时,先一次性 从磁盘文件中读取一批数据到缓 冲区,然后再从缓冲区逐个将数 据送入变量。 向文件写数据时,也是先将 变量中数据送到缓冲区,待缓冲 区装满后,再一起存到磁盘文件 中。 10.1 文件的概述 10.1.1 文件和文件指针 3. 缓冲文件和文件指针 磁盘文件 输出 输入 图10.2 系统对缓冲文件的处理 输入 输出 程序区 数据区 文件 缓冲区 内存 外存
101文件的概述 10.1.1文件和文件指针 3.缓冲文件和文件指针 ●文件类型指旨针 typedef struct t short level; / fill/empty level of buffer * uni gned flags; / File status flags * char fd / File descriptor / unsigned char hold; Ungetc char if no buffer * short bsize / Buffer size / unsigned char *buffer;/* Data transfer buffer */ unsigned char curp / Current active pointer * unsigned istemp / Temporary file indicator * short token; / Used for validity checking */ FILE / This is the File object * 2021/2/20
2021/2/20 9 10.1 文件的概述 10.1.1 文件和文件指针 3. 缓冲文件和文件指针 ⚫ 文件类型指针 在缓冲文件系统中,对每个正在使用的文件 都自动分配一个FILE类型的结构体变量,用于 存放文件的有关信息,如文件号、文件状态、 缓冲区地址和大小等。 FILE在类型是系统定义的,包含在 C语言中,无论对磁盘文件stdio.h 还是设备文件 头文件中 的读/写都要通过FILE类型的结构体变量进行。 因此对于每个使用中的磁盘文件必须先定义一 个FILE类型的文件指针变量并指向此变量。 FILE *文件指针变量名; typedef struct { short level; /* fill/empty level of buffer */ unsigned flags; /* File status flags */ char fd; /* File descriptor */ unsigned char hold; /* Ungetc char if no buffer */ short bsize; /* Buffer size */ unsigned char *buffer; /* Data transfer buffer */ unsigned char *curp; /* Current active pointer */ unsigned istemp; /* Temporary file indicator */ short token; /* Used for validity checking */ } FILE; /* This is the FILE object */
101文件的概述 10 10.1.1文件和文件指针 4.标准文件 标准文件是外部设备中的三个特殊的设备文件。它们 的文件指针是系统定义的,并由系统自动打开和关闭。这 三个标准文件分别是: ①标准输入文件,文件指针为din,系统指定为 ②标准输出文件,文件指针为 stdout,系统指定为 显示。 ③标准错误输出文件,文件指针为 stderr,系统指 定为显示器,输出错误信息。 2021/2/20
2021/2/20 10 标准文件是外部设备中的三个特殊的设备文件。它们 的文件指针是系统定义的,并由系统自动打开和关闭。这 三个标准文件分别是: ① 标准输入文件,文件指针为stdin,系统指定为 键盘。 ② 标准输出文件,文件指针为stdout,系统指定为 显示器。 ③ 标准错误输出文件,文件指针为stderr,系统指 定为显示器,输出错误信息。 10.1 文件的概述 10.1.1 文件和文件指针 4. 标准文件