C语言程序设计
第11章文件
问题:通过前面的学习可知,处理的数据是从键盘输入,运行结果输出到屏幕上,程序中用到的数据不能长期保存,怎么能长期保存数据呢?
是指记录在外部介质上的数据集合,由文件名来识别的。
文件
引子
第11章文件
本章难点
文件的概念
文件的打开和关闭函数
几种文件读写函数的使用和区别
ASCII文件和二进制文件
顺序存取
随机存取
本章要点
文件概述
文件类型指针和文件位置指针
文件的打开和关闭
文件的读写
文件的定位和出错检测
本章主要内容
文件概述
文件:存储在外部介质上数据的集合,是操作系统数据管理的单位
文件分类
按存储介质:
普通文件:存储介质文件(磁盘、磁带等)
设备文件:非存储介质(键盘、显示器、打印机等)
按文件的编码方式:
文本文件:ASCII文件,每个字节存放一个字符的ASCII码
二进制文件:数据按其在内存中的存储形式原样存放
文件概述
文件处理方法
缓冲文件系统:高级文件系统,系统自动为正在使用的文件开辟内存缓冲区,对文件的读写操作是对缓冲区进行的。
非缓冲文件系统:低级文件系统,由用户在程序中为每个文件设定缓冲区
从磁盘文件中读写数据如图所示
输出缓冲区
输入缓冲区
程序
数据区
输入
输出
输出
输入
程序从磁盘文件中读写数据的过程
磁盘
文件类型指针
指向FILE类型结构的指针变量。,如下图所示
定义形式
FILE *指针变量名;
如 FILE *fp;
通过fp即可找到存放某个文件信息的结构变量,然后通过结构变量提供的信息找到该文件,实施对文件的操作。
typedef struct
{ int _fd; //文件号
int _cleft; //缓冲区中剩下的字符数
int _mode; //文件操作方式
char *_next; //文件当前读写位置
char *_buff; //文件缓冲区位置
}FILE;
文件类型指针和文件位置指针
文件位置指针
是用来标识被打开文件的读写位置的,它指向当前文件的读写位置
文件指针和文件位置指针的区别如下
文件指针用来指向文件,使用之前必须在程序中定义说明
文件位置指针用来指向当前读或写的位置,它随着对该文件读写操作的进行而不断移动,还可以通过定位函数fseek来改变读写指针的位置
文件打开函数
使用fopen函数打开文件,其调用格式
fopen(文件名,打开文件方式);
其中,参数“文件名”是指文件的全名称,包括路径和文件名两部分,可以是字符串常量或字符串数组,如:“c:\\Tc\\”
打开方式如表所示
文件的打开和关闭
要打开的文件名
文件打开方式
文本文件
二进制文件
方式
含义
方式
含义
"r"
为只读打开一个文本文件
"rb"
为只读打开一个二进制文件
"w"
为只写创建一个文本文件
"wb"
为只写创建一个二进制文件
"a"
为追加打开一个文本文件
"ab"
为追加打开一个二进制文件
"r+"
为读写打开一个文本文件
"rb+"
为读写打开一个二进制文件
"w+"
为读写创建一个文本文件
"wb+"
为读写创建一个二进制文件
"a+"
为读写打开一个文本文件
"ab+"
为读写打开一个二进制文件
fopen函数的返回值是一个FILE类型的文件指针,若打开文件成功,该指针将指向相应的文件信息区。如果文件打开失败,它将返回一个空指针值NULL。
常见程序形式如
if((fp=fopen("file","r")) == NULL)
{
printf("File can't opened.\n");
exit(0); /* 使用exit函数时, */
}
c11 文件 来自淘豆网m.daumloan.com转载请标明出处.