- 1、本文档共72页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第11章 文件 文件概述 文件的打开与关闭 文件的读写 文件的定位 出错检测 11.1 文件概述 流 文件指针 缓冲文件系统 11.1.1 流 在C语言中,文件可以是磁盘文件、终端或打印机等设备文件,也可以是普通文件,但C语言在处理标准的设备文件和普通的文件时,并不区分类型。由于各种设备的差别会很大,所以C语言文件系统用“流”来实现对文件操作统一的界面。“流”可以看作是界于程序与文件间的一个逻辑设备,所有流的性质是完全类似的,流中存放的是有序的字符(字节)序列。为了从一个已有的文件输入信息,程序就需要创建一个与该文件关联的输入流,建立一条信息输入通道(输入流)。同理,要想向一个文件输出,就要建立一个与之关联的输出流。有时还可能建立既能输入又能输出的流。这种建立联系(创建流)的动作被形象地称为打开文件,文件被打开后就可以进行操作了。当一个文件不再需要时,程序可以切断与它的联系,撤销有关的流,这称为关闭文件。所以对文件的操作实际上就是对流的操作,整个的输入、输出过程也就是数据流入程序再从程序中流出的过程。 11.1.1 流 前面介绍了文件可以分为文本文件和二进制文件,于是在C语言中把流也分为两类,即字符流(text)和二进制流(binary),来与它们分别对应。字符流是一种字符序列,即意味着流中存放的是ASCII码;二进制流则是一种字节序列,流中存放的是二进制代码。 标准库提供了一套流操作函数,包括流的创建(打开文件)、撤销(关闭文件),对流的读写(实际上是通过流对文件的读和写),以及一些辅助函数。在后续的内容中将流的操作直接称为对文件的操作。 11.1.2 文件指针 与文件相关联的每个流都有一个FILE类型的控制结构,其中存储与流操作有关的(与打开的文件有关)所有信息,包括文件名、文件状态和文件当前位置等信息。FILE类型是在stdio.h中定义的。例如在Turbo C中,文件的类型声明如下: 11.1.2 文件指针 11.1.2 文件指针 对于用户而言,在编写源程序时不必关心FILE结构的细节,只要知道对于每一个要操作的文件,都必须定义一个指针变量,即文件指针。通过文件指针可获得对应文件的描述信息,进而对文件进行各种操作。文件指针的定义形式为: FILE *指针变量名 11.1.3 缓冲文件系统 在以前的C语言版本中,如Turbo C 2.0中,有两种对文件的处理方法:缓冲文件系统和非缓冲文件系统。所谓的缓冲文件系统是指系统在内存中自动为每一个正在使用的文件开辟一个大小固定(一般默认为512字节)的缓冲区,作为文件与使用数据的程序之间的传递媒介。如图11-1所示,当程序需要从文件中读入数据时,文件中的数据先以成块方式复制到缓冲区,然后再由程序从缓冲区读取,这样就不必每次访问外存,可以大大提高程序的工作效率。输出操作的处理方式与此类似,只是方向相反:每当缓冲区装满后或程序请求清空缓冲区时自动执行一次对文件的成块写操作。 11.1.3 缓冲文件系统 11.1.3 缓冲文件系统 非缓冲文件系统是指系统不自动开辟确定大小的缓冲区,而是由程序为每个文件设定缓冲区。目前ANSI C标准中不再提倡使用非缓冲式文件系统,本章也只介绍ANSI C规定的缓冲文件系统的相关操作。 11.2 文件的打开与关闭 文件的打开函数fopen 文件的关闭函数fclose 11.2.1 文件的打开函数fopen 如前述,对文件进行读写操作前,必须先建立程序与文件间的信息通道,即创建流,打开文件函数fopen()可创建一个流,将该流和一个文件关联,然后返回有关的文件指针。函数fopen()的原型是: FILE *fopen(const char *filename, const char *mode); 11.2.1 文件的打开函数fopen 其中,filename指向表示文件名的字符串,而mode指向表示文件操作模式的字符串,ANSI C规定的文件操作模式如表所示。fopen()返回一个文件指针,空文件指针表示fopen()打开文件失败。程序中绝对不能更改fopen()返回的文件指针。 fopen()的调用方式通常为: 文件指针名=fopen(文件名,使用文件方式); 11.2.1 文件的打开函数fopen 11.2.2 文件的关闭函数fclose 函数fclose()用于关闭fopen()打开的流。fclose()把遗留在缓冲区的数据写入文件,实施操作系统级的关闭操作。关闭失败会引起各种问题,如丢失数据、破坏文件和程序中的随机错误。fclose()同时释放与流联系的文件控制块,以后可以再次使用这部分空间。多数情况下,系统都限制同时处于打开状态的文件总数。因此,打开文件前先关闭无用文件是合理的。 11.2.2
您可能关注的文档
- C语言程序设计教程第08章节.ppt
- C语言程序设计教程第09章节.ppt
- C语言程序设计教程第10章节.ppt
- C语言程序设计教程第11章节.ppt
- C语言程序设计教程第12章节.ppt
- C语言程序设计教程葛素娟第二章节数据类型运算符及表达式.ppt
- C语言程序设计教程葛素娟第九章节指针.ppt
- C语言程序设计教程葛素娟第七章节函数.ppt
- C语言程序设计教程葛素娟第三章节顺序结构程序设计.ppt
- C语言程序设计教程葛素娟第十二章节文件.ppt
- 2024年新沪粤版八年级上册物理课件 5.1 物体的质量.ppt
- 2024年秋新北师大版七年级上册数学教学课件 2.5有理数的混合运算课时1.pptx
- 妇产科临床护理技能提升.pptx
- 2024年新西南师大版数学一年级上册 一 0~9的认识 2.比较 第2课时 “>”“<”“=”的理解及书写 教学课件.pptx
- 2024年新华师大版七年级上册数学教学课件 3.5最基本的图形——点和线课时1.pptx
- 2024年新北师大版七年级上册数学教学课件 2.5有理数的混合运算课时1.pptx
- 2022年江苏省扬州市中考道德与法治真题(原卷版).pdf
- 妇产科学要点解析.pptx
- 2024年新华师大版数学七年级上册 1.8.2 加减运算律在加减混合运算中的应用 教学课件.pptx
- 2024秋新沪科版物理八年级上册教学课件 第四章 神奇的透镜 第三节 神奇的“眼睛” .pptx
文档评论(0)