文档介绍:第12讲文件
内容提要
文件概述
标准文件操作
文件概述
文件是指存放在外存储器上的信息的集合
数据文件的存储形式
(1)文本文件(ASCII文件)
按数据的ASCII形式存储
(2)二进制文件
按数据在内存中的二进制形式存储
标准文件与非标准文件
利用缓冲区将对磁盘文件的频繁逐次访问变为批量访问的做法称为标准文件操作
程序数据区
输出文件缓冲区
输入文件缓冲区
磁盘
输出
输入
输出
输入
文件的存取方式
标准I/O提供了4种文件存取方法
(1)读写一个字符
(2)读写一个字符串,将多个字符组成的字符串写入文件或从文件中读出。
(3)格式化读写,根据格式控制指定的数据格式对数据进行转换存取。
(4)成块读写,也称做按记录读写。
4种存取方式和C语言的对应的函数关系:
标准文件FILE结构指针
FILE类型
保存被使用的文件的有关信息
所有的文件操作都需要FILE类型的指针
FILE是库文件中定义的结构体的别名
注意不要写成struct FILE
举例
FILE *fp;
FILE类型
typedef struct {
short level; /*缓冲区满空程度*/
unsigned flags; /*文件状态标志*/
char fd; /*文件描述符*/
unsigned char hold; /*无缓冲则不读取字符*/
short bsize; /*缓冲区大小*/
unsigned char *buffer; /*数据缓冲区*/
unsigned char *curp; /*当前位置指针*/
unsigned istemp; /*临时文件指示器*/
short token; /*用于有效性检查*/
} FILE;
文件的打开(fopen函数)
函数原型
FILE *fopen(char *filename, char *mode);
参数说明
filename:要打开的文件路径
mode :打开模式
返回值
若成功,返回指向被打开文件的指针
若出错,返回空指针NULL(0)
文件的打开模式
文件操作方式
含义
″r″(只读)
为只读打开一个字符文件
″w″(只写)
为只写打开一个字符文件,文件指针指向文件首部
″a″(追加)
打开字符文件,指向文件尾,在已存在的文件中追加数据
″rb″(只读)
为只读打开一个二进制文件
″wb″(只写)
为只写打开一个二进制文件
″ab″(追加)
打开二进制文件,以向文件追加数据
″r+″(读写)
以读写方式打开一个已存在的字符文件
″w+″(读写)
为读写建立一个新的字符文件
″a+″(读写)
为读写打开一个字符文件,进行追加
″rb+″(读写)
为读写打开一个二进制文件
″wb+″(读写)
为读写建立一个新的二进制文件
″ab+″(读写)
为读写打开一个二进制文件进行追加
文件的打开举例
FILE *fp1, *fp2;
/* 以文本只读方式打开file1 */
if (!(fp1=fopen("file1", "r"))) {
printf("Cannot Open This File!\n");
exit(0); /* 退出程序*/
}
/* */
fp2=fopen("C:\\HOME\\", "rb+");