- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十二章 文 件 $12.1 C文件概述 文件(file)是程序设计中一个重要的概念。所谓“文件”一般指:存储在外部介质上数据的集合,一批数据是以文件的形式存放在外部介质(如磁盘)上的。 操作系统是以文件为单位对数据进行管理的,也就是说,如果想找存在外部介质上的数据,必须先按文件名找到所指定的文件,然后再从该文件中读取数据。向外部介质上存储数据也必须先建立一个文件(以文件名标识),才能向它输出数据。 以前各章中我们所用到的输入和输出,都是以终端为对象的,即从终端键盘输入数据,运行结果输出到终端上。 从操作系统的角度,每一个与主机相联的输入输出设备都看作是一个文件。 例如,终端键盘是输入文件,显示屏和打印机是输出文件。 在程序运行时,常常需要将一些数据(运行的最终结果或中间数据)输出到磁盘上存放起来,以后需要时再从磁盘中输入到计算机内存。这就要用到磁盘文件。 C语言把文件看作是一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。根据数据的组织形式,可分为ASCII文件和二进制文件。ASCII文件又称文本(text)文件,它的每一个字节放一个ASCII代码,代表一个字符。二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。如果有一个整数10000,在内存中占2个字节,如果按ASCII形式输出,则占5个字节,而按二进制形式输出,在磁盘上只占2个字节。用ASCII码形式输出与字符一一对应。 )2 =213+210+29+28+24 一个字节代表一个字符,因而便于对字符进行逐个处理,也便于输出字符。但一般占存储空间较多,而且要花费转换时间(二进制形式与ASCII码间的转换)。用二进制形式输出数值,可以节省外存空间和转换时间,但一个字节并不对应一个字符,不能直接输出字符形式。一般中间结果数据需要暂时保存在外存上以后又需要输入到内存的,常用二进制文件保存。 由前所述,一个C文件是一个字节流或二进制流。它把数据看作是一连串的字符(字节),而不考虑记录的界限。换句话说,c语言中文件并不是由记录(record)组成的(这是和PASCAL或其它高级语言不同的)。 在C语言中对文件的存取是以字符(字节)为单位的。输入输出的数据流的开始和结束仅受程序控制而不受物理符号(如回车换行符)控制。我们把这种文件称为流式文件。C语言允许对文件存取一个字符,就增加了处理的灵活性。 在过去使用的C版本(如UNIX系统下使用的C)有两种对文件的处理方法:一种叫“缓冲文件系统”,一种叫“非缓冲文件系统”。所谓缓冲文件系统是指: 系统自动地在内存区为每一个正在使用的文件名开辟一个缓冲区。从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘去。如果从磁盘向内存读入数据,则一次从磁盘文件将一批数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(给程序变量)。缓冲区的大小由各个具体的C版本确定,一般为512字节。 所谓“非缓冲文件系统”是指系统不自动开辟确定大小的缓冲区,而由程序为每个文件设定缓冲区。 在UNIX系统下,用缓冲文件系统来处理文本文件,用非缓冲文件系统处理二进制文件。用缓冲文件系统进行的输入输出又称为高级(或高层)磁盘输入输出(高层I/O),用非缓冲进行的输入输出又称为低级(低层)输入输出系统。1983年ANSI C标准决定不采用非缓冲文件系统,而只采用缓冲文件系统。即既用缓冲文件系统处理文本文件,也用它来处理二进制文件。也就是将缓冲文件系统扩充为可以处理二进制文件。 在C语言中,没有输入输出语句,对文件的读写都是用库函数来实现的。 ANSI规定了标准输入输出函数,用它们对文件进行读写。 本章主要介绍ANSI C的文件系统以及对它的读写。考虑到目前广泛使用的C版本中仍常用到非缓冲文件系统,我们也准备对它有关的内容作简要的介绍。但是希望读者尽可能不要采用不符合ANSI C标准的那些部分,否则将使程序可移植性降低。 $12.2文件类型指针 缓冲文件系统中,关键的概念是“文件指针”。每个被使用的文件都在内存中开辟一个区,用来存放文件的有关信息(如文件的名字、文件状态及文件当前位置等)。这些信息是保存在一个结构体类型的变量
您可能关注的文档
最近下载
- 北京市2025年高考:《物理》考试真题(含答案).pdf VIP
- (完整版)建设甲方、施工方全套收发文登记表格.pdf VIP
- 弹性力学仿真软件:SimScale:材料属性与弹性模量在SimScale中的设置.pdf VIP
- 小学美术四年级上册完整教案.docx VIP
- 宋城千古情的经营模式探究.doc VIP
- (人教PEP版2025新教材)四年级英语上册unit 5 全单元课件.pptx
- 四库全书基本概念系列文库:榆社县志.pdf VIP
- XX水库工程大坝基础垫层混凝土施工方案.docx VIP
- 感染性休克课件.pptx
- 人教部编版二年级语文下册第19课《大象的耳朵》优质课件.pptx VIP
原创力文档


文档评论(0)