- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C_C程序设计与上机指导010
第10章 文 件 10.1 文 件 概 述 10.1.1 文件的概念 10.1.2 缓冲文件系统和非缓冲文件系统 10.1.3 文件指针 10.1.1 文件的概念 文件是存储在外部介质上的数据或信息的集合。一个文件有一个对应的名称,叫做文件名。对于文件我们已经不很陌生。比如:写一个C语言源程序,需要起一个文件名,才能存放在硬盘上。我们打开一个word文档,也是要先找到文件名才能打开。就操作系统而言,操作系统对外部介质上的信息是以文件为单位进行管理的。因此,用户才能够按名存取,而不需要关心信息在外部介质上的存放细节。 1. 文件的组织形式 文件的组织形式一般有两种:记录式文件和流式文件。 记录式文件是有结构的文件,它按记录来组织文件。每个文件由若干条记录组成,而每条记录又由若干个数据项组成。 流式文件是无结构文件。它按字符流的方式组织文件,整个文件是一个字符流或二进制流。文件的存取是以字符(字节)为单位的。数据流的开始和结束只受程序的控制,而不受物理符号(如回车换行符)的控制。C语言文件就是流式文件。 2. 文件分类 (1) 从用户的角度分,可分为普通文件和设备文件 (2) 从数据存储形式分,可分为ASCII码文件和二进制码文件 10.1.2 缓冲文件系统和非缓冲文件系统 C语言所使用的文件系统有两种:缓冲文件系统和非缓冲文件系统 1. 缓冲文件系统 缓冲文件系统是系统自动在内存为每一个正在使用的文件开辟一个缓冲区。从外存读入数据或写入外存的数据都先经过缓冲区。当从外存读入时,先读入缓冲区,再从缓冲区读入程序区。写入外存时,也是先写入缓冲区,再输出到外存。一般是在缓冲区装满后,才会有真正的输入输出。这样做的目的是为了减少对外存的读写次数,提高执行效率。 2. 非缓冲文件系统 非缓冲文件系统不是系统自动设置缓冲区,而是由用户根据需要自己设置。因此,非缓冲文件系统又称为系统输入输出或低层输入输出系统。 传统的UNIX标准中,用缓冲文件系统处理ASCII文件,而用非缓冲文件系统处理二进制文件。ANSI C只采用缓冲文件系统,即对二进制文件和ASCII文件都采用缓冲文件系统来处理。 10.1.3 文件指针 在进行文件操作时,需要用到文件指针。缓冲文件系统为每个文件在内存中开辟一个文件信息区,用来存放该文件的的相关信息。如文件名、文件状态等等。文件信息保存在系统自动定义的FILE类型的结构变量中。Turbo C在stdio.h中有FILE类型的声明。 typedef struct{ short level; /*缓冲区满或空的程度*/ unsigned flags; /*文件状态标志*/ char fd; /*文件名*/ unsigned char fold; /*如无缓冲区,则不读取字符*/ short bsize; /*缓冲区大小*/ unsigned char *buffer; /*数据缓冲区位置*/ unsigned char *curp /*当前位置指针*/ unsigned istemp; /*临时文件指示器*/ short token; /*用于有效性检验*/ }FILE; 对它的使用如同一般结构类型。可以定义变量、数组、指针。 如:FILE f[10],*fp; 定义了一个结构数组f,有10个元素,每个元素分别用来存放一个文件的文件信息。另外定义了一个文件指针fp。可以使fp指向一个文件的结构变量,从而通过它来访问该文件的文件信息。 10.2 文件的打开与关闭 在对文件在进行读写操作之前要先打开,操作结束要进行关闭。使用文件打开与关闭函数应包含头文件stdio.h 10.2.1 文件的打开(fopen函数) 10.2.2 文件的关闭(fclose函数) 10.2.1 文件的打开(fopen函数) 打开文件:是指把要操作的文件的信息传给操作系统,通知操作系统打开哪个文件,以及文件的使用方式是什么。 函数格式: fopen(文件名,文件使用方式) 其中: 文件名:是字符串常量或字符串数组,并且可以带路径。 文件使用方式见表10.1。 表10.1 文件使用方式列表 10.2.2 文件的关闭(fclose函数) 当使用完一个文件时,应对其关闭,以防误操作。文件关闭是使文件指针与文件脱钩。关闭后就不能再通过该指针对以前与其关联的文件进行任何读写操作。除非再次打开,并使该指针重新指向它。 函数形式:fclose(文件指针) 因为对于缓冲文件系统,数据不是直接输入内存或写入磁盘的,而是先暂存在缓冲区里,待缓冲区满了才进行真正的读写。如果缓冲区还未满,程序就结束了。此时,缓冲区中的数据就会丢失了。而如果正常关闭,系统会先把缓冲区的数据读入内存或写入磁盘,然后再释放文件指针。 10.3
文档评论(0)