欢迎来到天天文库
浏览记录
ID:49908842
大小:162.50 KB
页数:37页
时间:2020-03-04
《c语言程序设计 徐贞如 第12章 文件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第12章文件文件是程序设计中一个重要的概念。所谓“文件”一般指存储在外部介质上数据的集合。一批数据是以文件的形式存放在外部介质(如磁盘)上的。每个文件都必须有一个文件名,其一般结构为:主文件名[.扩展名]。文件一般可分为程序文件和数据文件。程序文件是由若干个指令语句信息组成,数据文件则是程序操作的一些数值和文字。本章介绍的文件操作主要是对磁盘数据文件的使用和操作。在程序运行时,常常需要将一些数据(运行的最后结果或中间数据)输出到磁盘上存放起来,以后需要时再从磁盘中输入到计算机内存。这就要用到磁盘文件。C语言把文件看作是由一个一个字符(字节)的数据顺序组成。根据文件的存储方式。可分
2、为ASCII码文件和二进制文件。(1)ASCII码文件(又称文本文件),它的每一个字节放一个ASCII代码,代表一个字符。(2)二进制文件是把内存中的按其在内存中的存储形式原样输出到磁盘上存放。如:有一个整数100,按二进制形式存储,占用一个字节就够用;按ASCII码形式存储,由于每位数字都要占用一个字节,所以需要3个字节空间。如图12-1用ASCII码形式输出与字符一一对应,便于对字符进行逐个处理。但一般占存储空间较多。用二进制形式输出数值,可以节省空间,但一个字节并不对应一个字符,不能直接输出字符形式。12.2缓冲文件系统与非缓冲文件系统1.缓冲文件系统“缓冲文件系统”是指系
3、统自动地在内存区为每个正在使用的文件开辟一个缓冲区。当从内存向磁盘输出数据时,必须首先输出到内存缓冲区中,待缓冲区装满后,再一起输出到磁盘文件中。从磁盘文件向内存读入数据时,则正好相反,首先将一批数据读入到缓冲区中,再从缓冲区中将数据逐个送到程序数据区。2.非缓冲文件系统“非缓冲文件系统”指系统不自动开辟确定大小的缓冲区,而由程序为每个文件设定缓冲区。1983年ANSIC标准决定不再采用非缓冲文件系统,而只采用缓冲文件系统处理文本文件和二进制文件。12.3文件类型指针缓冲文件系统中,关键的概念是“文件指针”。在文件操作时,必须定义一个文件指针变量,只有通过文件指针,才能找到与其相
4、关联的文件,实现对文件的访问。C语言的文件管理系统为每一个被使用的文件在内存中开辟一个区,用来存放文件的有关信息(如文件名、文件状态及文件当前位置等)。这些信息保存在一个结构体变量中,该结构体类型是由系统定义的取名为FILE。TurboC在stdio.h文件中有以下的文件类型定义:typedefstruct{int_fd;/*文件号*/int_cleft;/*缓冲区中剩余的字符*/int_mode;/*操作模式*/char*_nextc;/*下一个字符位置*/char*_buff;/*缓冲位置*/}FILE;其中大写的FILE是用typedef自定义的结构类型名。有了FILE类型
5、之后,就可以定义一个指向FILE类型的指针变量,并通过该指针访问文件。例如:FILE*fp;fp是一个指向FILE类型结构体的指针变量。这样可以使fp指向某一个文件的结构体变量,从而通过该结构体变量中的文件信息能够访问该文件。12.4文件打开与关闭与其他高级语言一样,C语言规定对磁盘文件进行读写之前应该先“打开”该文件,然后再进行具体的读/写操作;在使用结束后,应该关闭该文件。12.4.1文件的打开(fopen函数)C语言在其标准输入输出函数库中定义了对文件操作的若干函数,其中fopen()函数用来打开磁盘文件。调用方式为:FILE*fp;fp=fopen(“文件名”,“使用文件
6、方式”);如:fp=fopen(“a1”,”r”);表示打开名字为a1的文件,使用文件方式为“读入”,open函数带回指向a1文件的指针并赋给fp这样fp就和文件a1相联系了,也就是fp指向a1文件。表12-1文件使用方式文件使用方式含义r(只读)为输入打开一个文本文件w(只写)为输出打开一个文本文件a(追加)向文本文件尾添加数据rb(只读)为输入打开二进制文件wb(只写)为输出打开二进制文件ab(追加)向二进制文件尾追加数据r+(读写)为读写打开一个文本文件w+(读写)为读写建立一个新的文本文件a+(读写)为读写打开一个文本文件rb+(读写)为读写打开一个二进制文件wb+(读写
7、)为读写建立一个新的二进制文件ab+(读写)为读写打开一个二进制文件说明:(1)用“r”方式打开的文件只能用于向计算机输入数据,而且该文件应该已经存在。(2)用“w”方式打开的文件只能用于向该文件写数据(即输出文件)。如果原来不存在该文件,则在打开时新建立一个以指定的名字命名的文件。如果原来已存在一个以该文件名命名的文件,则在打开时将该文件删除,然后新建立一个新文件。(3)如果希望向文件末尾添加新的数据,则应该用“a”方式打开。但此时该文件必须已存在;否则将得到错误信息。(4)用
此文档下载收益归作者所有