文档介绍:第13章文件
C文件概述
文件:存储在外部介质上数据的集合,是操作系统数据管理的单位
使用数据文件的目的
1、数据文件的改动不引起程序的改动——程序与数据分离
2、不同程序可以访问同一数据文件中的数据——数据共享
3、能长期保存程序运行的中间数据或结果数据
文件分类
按文件的逻辑结构:
记录文件:由具有一定结构的记录组成(定长和不定长)
流式文件:由一个个字符(字节)数据顺序组成
按存储介质:
普通文件:存储介质文件(磁盘、磁带等)
设备文件:非存储介质(键盘、显示器、打印机等)
按数据的组织形式:
文本文件: ASCII文件,每个字节存放一个字符的ASCII码
二进制文件:数据按其在内存中的存储形式原样存放
如 int型数10000
00100**********
内存存储形式
00100**********
二进制形式
0011000100110000001100000011000000110000
ASCII形式
文本文件特点:
存储量大、速度慢、便于对字符操作
二进制文件特点:
存储量小、速度快、便于存放中间结果
0的ASCII码
文件处理方法
缓冲文件系统:高级文件系统,系统自动为正在使用的文件开辟内存缓冲区
非缓冲文件系统:低级文件系统,由用户在程序中为每个文件设定缓冲区
磁盘文件
输出文件缓冲区
输入文件缓冲区
程序数据区
a
缓冲文件系统:
缓冲区
指令区
程序
用户数据区
磁盘
非缓冲文件系统:
文件类型指针
文件结构体FILE
缓冲文件系统为每个正使用的文件在内存开辟文件信息区
文件信息用系统定义的名为FILE的结构体描述
typedef struct
{ int _fd; //文件号
int _cleft; //缓冲区中剩下的字符数
int _mode; //文件操作方式
char *_next; //文件当前读写位置
char *_buff; //文件缓冲区位置
}FILE;
文件类型指针
指针变量说明: FILE *fp;
用法:
文件打开时,系统自动建立文件结构体,并把指向它的指针返回来,程序通过这个指针获得文件信息,访问文件
文件关闭后,它的文件结构体被释放
文件名
文件使用
方式
文件类型指针
C程序
操作系统
磁盘
文件的打开与关闭
C文件操作用库函数实现,
文件使用方式:打开文件-->文件读/写-->关闭文件
系统自动打开和关闭三个标准文件:
标准输入------键盘 stdin
标准输出------显示器 stdout
标准出错输出-----显示器 stderr
打开文件fopen
函数原型: FILE *fopen(char *name,char *mode)
功能:按指定方式打开文件
返值:正常打开,为指向文件结构体的指针;打开失败,为NULL
要打开的文件名
使用文件方式
例文件打开与测试
FILE *fp;
fp=fopen(“”,“w”);
if(fp==NULL)
{ printf(“File open error!\n”);
exit(0);
}
例 FILE *fp;
fp= fopen (“c:\\fengyi\\bkc\\”,”r”);
例 FILE *fp;
char *filename=“c:\\fengyi\\bkc\\”
fp= fopen(filename,”r”);
“r+/rb+”(读写)
“a/ab”(追加)
“w/wb”(只写)
“r/rb”(只读)
“w+/wb+”(读写)
“a+/ab+”(读写)
为输入打开一个文本/二进制文件
为输出打开或建立一个文本/二进制文件
为读/写打开一个文本/二进制文件
为读/写建立一个文本/二进制文件
为读/写打开或建立一个文本/二进制文件
向文本/二进制文件尾追加数据
文件使用方式
含义
文件关闭fclose
作用:使文件指针变量与文件“脱钩”,释放文件结构体和文件指针
函数原型:int fclose(FILE *fp)
功能:关闭fp指向的文件
返值:正常关闭为0;出错时,非0
文件打开时返回的文件类型指针
磁盘文件
输出文件缓冲区
输入文件缓冲区
程序数据区
a
缓冲文件系统:
fclose
不关闭文件可能会丢失数据
文件的读写
字符I/O:fputc与fgetc
fputc
函数原型:int fputc(int c, FILE *fp)
功能:把一字节代码c写入fp指向的文件中
返值:正常,返回c;出错,为EOF