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. 标准文件