清华大学出版社 TSINGHUA UNIVERSITY PRESS 第十三章 文件
第十三章
清华大学出版社 TSINGHUA UNIVERSITY PRESS 本章要点 文件的基本概念 文件的基本函数 文件的顺序读写 ■文件的随机读写 文件简单应用
⚫ 本章要点 ◼ 文件的基本概念 ◼ 文件的基本函数 ◼ 文件的顺序读写 ◼ 文件的随机读写 ◼ 文件简单应用
清华大学出版社 TSINGHUA UNIVERSITY PRESS ●主要内容 13.1c文件概述 13.2文件类型指针 13.3文件的打开与关闭 134文件的读写 135文件的定位 13.6出错的检测 13.7文件输入输出小结
⚫ 主要内容 13.1 C文件概述 13.2 文件类型指针 13.3 文件的打开与关闭 13.4 文件的读写 13.5 文件的定位 13.6 出错的检测 13.7 文件输入输出小结
清华大学出版社 TSINGHUA UNIVERSITY PRESS 13.1c文件概述 文件:文件指存储在外部介质(如磁盘磁带)上 数据的集合。 操作系统是以文件为单位对数据进行管理的。 输出文件缓冲区 程序 文件 数据区 输入文件缓冲区
13.1 C文件概述 文件:文件指存储在外部介质(如磁盘磁带)上 数据的集合。 操作系统是以文件为单位对数据进行管理的。 文件 程序 数据区 输出文件缓冲区 输入文件缓冲区
清华大学出版社 TSINGHUA UNIVERSITY PRESS 13.1c文件概述(续) 文件的分类 ●从用户观点: 特殊文件(标准输入输出文件或标准设备文件) 普通文件(磁盘文件) 从操作系统的角度看,每一个与主机相连的输入 输出设备看作是一个文件。 例:输入文件:终端键盘 输出文件:显示屏和打印机
13.1 C文件概述(续) 文件的分类 ●从用户观点: 特殊文件(标准输入输出文件或标准设备文件)。 普通文件(磁盘文件)。 ●从操作系统的角度看,每一个与主机相连的输入 输出设备看作是一个文件。 例:输入文件:终端键盘 输出文件:显示屏和打印机
清华大学出版社 TSINGHUA UNIVERSITY PRESS 13.1c文件概述(续) 文件的分类 ●按数据的组织形式: ASCI文件(文本文件):每一个字节放一个ASC代码 二进制文件:把内存中的数据按其在内存中的存储形 式原样输出到磁盘上存放。 例:整数10000在内存中的存储形式以及分别按ASCI 码形式和二进制形式输出如下图所示 ASCI形式 内存中 001100010011000000110000001100000110000 存储形式 (1) (0) (0) (0) 0010011100010000 进制形式 0010011100010000
文件的分类 ●按数据的组织形式: ASCII文件(文本文件):每一个字节放一个ASCII代码 二进制文件:把内存中的数据按其在内存中的存储形 式原样输出到磁盘上存放。 例:整数10000在内存中的存储形式以及分别按ASCII 码形式和二进制形式输出如下图所示: 13.1 C文件概述(续)
清华大学出版社 TSINGHUA UNIVERSITY PRESS 13.1c文件概述(续) 文件的分类 ASCI文件和二进制文件的比较 ASCI文件便于对字符迸行逐个处理,也便于输出 字符。但一般占存储空间较多,而且要花费转换时 间。 二进制文件可以节省外存空间和转换时间,但一个 字节并不对应一个字符,不能直接输出字符形式。 一般中间结果数据需要暂时保存在外存上,以后又 需要输入内存的,常用二进制文件保存
13.1 C文件概述(续) 文件的分类 ASCII文件和二进制文件的比较: ASCII文件便于对字符进行逐个处理,也便于输出 字符。但一般占存储空间较多,而且要花费转换时 间。 二进制文件可以节省外存空间和转换时间,但一个 字节并不对应一个字符,不能直接输出字符形式。 一般中间结果数据需要暂时保存在外存上,以后又 需要输入内存的,常用二进制文件保存
清华大学出版社 TSINGHUA UNIVERSITY PRESS 13.1c文件概述(续) 文件的分类 C语言对文件的处理方法 缓冲文件系统:系统自动地在内存区为每一个正 在使用的文件开辟一个缓冲区。用缓冲文件系统 进行的输入输出又称为高级磁盘输入输岀。 非缓冲文件系统:系统不自动开辟确定大小的缓 冲区,而由程序为每个文件设定缓冲区。用非缓 冲文件系统进行的输入输出又称为低级输入输出 系统
13.1 C文件概述(续) 文件的分类 •C语言对文件的处理方法: 缓冲文件系统:系统自动地在内存区为每一个正 在使用的文件开辟一个缓冲区。用缓冲文件系统 进行的输入输出又称为高级磁盘输入输出。 非缓冲文件系统:系统不自动开辟确定大小的缓 冲区,而由程序为每个文件设定缓冲区。用非缓 冲文件系统进行的输入输出又称为低级输入输出 系统
清华大学出版社 TSINGHUA UNIVERSITY PRESS 13.1c文件概述(续) 说明 在∪NⅨ系统下用缓冲文件系统来处理文本文件, 用非缓冲文件系统来处理二进制文件。 ANSI C标准只采用缓冲文件系统来处理文本文 件和二进制文件。 C语言中对文件的读写都是用库函数来实现
13.1 C文件概述(续) 说明: 在UNIX系统下,用缓冲文件系统来处理文本文件, 用非缓冲文件系统来处理二进制文件。 ANSI C 标准只采用缓冲文件系统来处理文本文 件和二进制文件。 C语言中对文件的读写都是用库函数来实现
清华大学出版社 TSINGHUA UNIVERSITY PRESS 13.2文件类型指针 Turbo C在 stdio. h文件中有以下的文件类型声明 typedef struct shortlevel;/*缓冲区“满”或“空”的程度*/ unsignedflags;/*文件状态标志*/ chard /*文件描述符* unsignedcharhold;/*如无缓冲区不读取字符*/ shortbsize;/*缓冲区的大小*/ unsignedchar* buffer;/数据缓冲区的位置* unsigned*curp/指针,当前的指向*/ unsignedistemp;/临时文件,指示器* shorttoken;/用于有效性检查*/}FILE 在缓冲文件系统中,每个被使用的文件都要在内存中开辟一 FLE类型的区存放文件的有关信息
13.2 文件类型指针 Turbo C在stdio.h文件中有以下的文件类型声明: typedef struct { shortlevel; /*缓冲区“满”或“空”的程度*/ unsignedflags; /*文件状态标志*/ charfd; /*文件描述符*/ unsignedcharhold; /*如无缓冲区不读取字符*/ shortbsize; /*缓冲区的大小*/ unsignedchar*buffer;/*数据缓冲区的位置*/ unsignedar*curp;/*指针,当前的指向*/ unsignedistemp;/*临时文件,指示器*/ shorttoken;/*用于有效性检查*/}FILE; 在缓冲文件系统中,每个被使用的文件都要在内存中开辟一 FILE类型的区,存放文件的有关信息