清华大学出版社 TSINGHUA UN/VERSITY PRESS 第十章 文件操作
第十章
清华大学出版社 TSINGHUA UNIVERSITY PRESS 本章要点 文件的基本概念 文件的基本函数 文件的顺序读写 ■文件的随机读写 文件的简单应用
⚫ 本章要点 ◼ 文件的基本概念 ◼ 文件的基本函数 ◼ 文件的顺序读写 ◼ 文件的随机读写 ◼ 文件的简单应用
清华大学出版社 TSINGHUA UNIVERSITY PRESS ●主要内容 10.1c文件的有关概念 102文件的打开与关闭 103文件的顺序读写 104文件的随机读写 10.5文件读写的出错检测
⚫ 主要内容 10.1 C文件的有关概念 10.2 文件的打开与关闭 10.3 文件的顺序读写 10.4 文件的随机读写 10.5 文件读写的出错检测
清华大学出版社 TSINGHUA UNIVERSITY PRESS §101c文件的有关概念 10.1.1什么是文件 所谓文件一般指存储在外部介质(如磁盘磁带)上 数据的集合 操作系统是以文件为单位对数据进行管理的. 输入输出是数据传送的过程,数据如流水一样从 一处流向另一处,因此常将输入输出形象地称为 流( stream),即输入输出流。 C语言把文件看作是一个字符(字节)的序列 即由一个一个字符(字节)的数据顺序组成 个输入输出流就是个字节流或二进制流
§10.1 C文件的有关概念 10.1.1什么是文件 所谓文件一般指存储在外部介质(如磁盘磁带)上 数据的集合. 操作系统是以文件为单位对数据进行管理的. 输入输出是数据传送的过程,数据如流水一样从 一处流向另一处,因此常将输入输出形象地称为 流(stream),即输入输出流。 C语言把文件看作是一个字符(字节)的序列, 即由一个一个字符(字节)的数据顺序组成。一 个输入输出流就是一个字节流或二进制流
清华大学出版社 TSINGHUA UNIVERSITY PRESS §10.10文件的有关概念 10.1.2文件名 个文件要有一个惟一的文件标识,以便用户识 别和引用。文件标识包括三部分 (1)文件路径:(2)文件名主干;(3)文件后缀。 文件路径表示文件在外部存储设备中的位置。 如: d: \cc\.\ filel dat 注意 文件标识被称为文件名,但此时的文件名包括以上三部分内容 而不仅是文件名主干 文件名主干的命名规则遵循标识符的命名规则。后缀用来表 示文件的性质,一般不超过3个字母 如:doc(Word生成的文件),txt(文本文件),dat(数据文件)
§10.1 C文件的有关概念 10.1.2 文件名 一个文件要有一个惟一的文件标识,以便用户识 别和引用。文件标识包括三部分: (1)文件路径:(2)文件名主干;(3)文件后缀。 文件路径表示文件在外部存储设备中的位置。 如: d: \ cc \ temp \ file1 . dat ↑ ↑ ↑ 文件路径 文件名主干 文件后缀 注意: • 文件标识被称为文件名,但此时的文件名包括以上三部分内容, 而不仅是文件名主干。 •文件名主干的命名规则遵循标识符的命名规则。后缀用来表 示文件的性质,一般不超过3个字母. 如:.doc (Word 生成的文件),.txt (文本文件),.dat (数据文件)
清华大学出版社 TSINGHUA UNIVERSITY PRESS §1010文件的有关概念 10.1.3文件的分类 根据数据的组织形式,数据文件可分为ASC工工 文件和二进制文件。 ASCI文件文本文件)每一个字节放一个ASC代码 进制文件:把内存中的数据按其在內存中的存储形 式原样输出到磁盘上存放. 例:整数10000在内存中的存储形式以及分别按ASCI 码形式和二进制形式输出如下图所示: ASCI形式 内存中 00110001001100000110000011000001100 存储形式 (1) (0) 0010011100010000 二进制形式 0010011100010000
10.1.3 文件的分类 根据数据的组织形式,数据文件可分为ASCII 文件和二进制文件。 ASCII文件(文本文件):每一个字节放一个ASCII代码 二进制文件:把内存中的数据按其在内存中的存储形 式原样输出到磁盘上存放. 例:整数10000在内存中的存储形式以及分别按ASCII 码形式和二进制形式输出如下图所示: §10.1 C文件的有关概念
清华大学出版社 TSINGHUA UNIVERSITY PRESS §1010文件的有关概念 10.1.3文件的分类 ASCI文件和二进制文件的比较 ASCI文件便于对字符进行逐个处理,也便于输出 字符。但一般占存储空间较多,而且要花费转换时 二进制文件可以节省外存空间和转换时间,但一个 字节并不对应一个字符,不能直接输出字符形式。 一般中间结果数据需要暂时保存在外存上,以后又 需要输入内存的,常用二进制文件保存
§10.1 C文件的有关概念 10.1.3 文件的分类 ASCII文件和二进制文件的比较: ASCII文件便于对字符进行逐个处理,也便于输出 字符。但一般占存储空间较多,而且要花费转换时 间。 二进制文件可以节省外存空间和转换时间,但一个 字节并不对应一个字符,不能直接输出字符形式。 一般中间结果数据需要暂时保存在外存上,以后又 需要输入内存的,常用二进制文件保存
清华大学出版社 TSINGHUA UNIVERSITY PRESS §1010文件的有关概念 10.1.4文件缓冲区 ANSI O标准采用“缓冲文件系统″处理文件. 缓冲文件系统:系统自动地在内存区为每一个正 在使用的文件开辟一个缓冲区 从内存向磁盘输出数据必须先送到内存中的缓冲 区,装满缓冲区后才一起送到磁盘去 →输出文件缓冲区 程序 文件 数据区 输入文件缓冲区
§10.1 C文件的有关概念 10.1.4 文件缓冲区 ANSI C标准采用“缓冲文件系统”处理文件. 缓冲文件系统:系统自动地在内存区为每一个正 在使用的文件开辟一个缓冲区。 从内存向磁盘输出数据必须先送到内存中的缓冲 区,装满缓冲区后才一起送到磁盘去。 文件 程序 数据区 输出文件缓冲区 输入文件缓冲区
清华大学出版社 TSINGHUA UNIVERSITY PRESS §101c文件的有关概念 10.1.5文件指针 不同的C编译系统的FILE类型包含的内容不完全相同,但大同小 异。 Turbo C在 stdio.h文件中有以下的文件类型声明: typedef struct shortlevel;/*缓冲区“满”或“空”的程度*/ unsignedflags;/*文件状态标志*/ chard;/*文件描述符*/ unsignedcharhold;/*如无缓冲区不读取字符*/ shortbsize;/*缓冲区的大小* unsignedchar*buffer;y数据缓冲区的位置*/ unsigned*curp/指针,当前的指向*/ unsignedistemp;/临时文件,指示器* shorttoken;/用于有效性检查*/}FILE; 在缓冲文件系统中,每个被使用的文件都要在内存中开辟一 FILE类型的区存放文件的有关信息
§10.1 C文件的有关概念 10.1.5 文件指针 不同的C编译系统的FILE类型包含的内容不完全相同,但大同小 异。 Turbo C在stdio.h文件中有以下的文件类型声明: typedef struct { shortlevel; /*缓冲区“满”或“空”的程度*/ unsignedflags; /*文件状态标志*/ charfd; /*文件描述符*/ unsignedcharhold; /*如无缓冲区不读取字符*/ shortbsize; /*缓冲区的大小*/ unsignedchar*buffer;/*数据缓冲区的位置*/ unsignedar*curp;/*指针,当前的指向*/ unsignedistemp;/*临时文件,指示器*/ shorttoken;/*用于有效性检查*/}FILE; 在缓冲文件系统中,每个被使用的文件都要在内存中开辟一 FILE类型的区,存放文件的有关信息
清华大学出版社 TSINGHUA UNIVERSITY PRESS §101c文件的有关概念 10.1.5文件指针 FILE类型的数组 FLEf[5]:义了一个结构体数组f,它有5个元素 可以用来存放5个文件的信息 文件型指针变量: FILE*fp;fp是一个指向FIL类型结构体的 指针变量。可以使fp指向某一个文件的结构体变量,从 而通过该结构体变量中的文件信息能够访问该文件。如果 有n个文件,一般应设n个指针变量,使它们分别指向n 个文件,以实现对文件的访问
§10.1 C文件的有关概念 10.1.5 文件指针 FILE类型的数组: FILE f[5];定义了一个结构体数组f,它有5个元素, 可以用来存放5个文件的信息。 文件型指针变量: FILE *fp;fp是一个指向FILE类型结构体的 指针变量。可以使fp指向某一个文件的结构体变量,从 而通过该结构体变量中的文件信息能够访问该文件。如果 有n个文件,一般应设n个指针变量,使它们分别指向n 个文件,以实现对文件的访问