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