1. 1、本文档共45页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第13章文件

计算机与通信工程学院 计算机科学与技术学院 第13章 文件 13.1 C文件概述 13.2 文件类型指针 13.3 文件操作 13.1 C文件概述 “文件”是指存储在外部介质上的数据的集合。操作系统是以文件为单位对数据进行管理的,如果想找存在外部介质上的数据,必须先按文件名找到所指定的文件,然后再从该文件中读取数据。要向外部介质上存储数据必须先建立一个文件(以文件名标识),才能向它输出数据。 从操作系统的角度看,每一个与主机相连的输入输出设备都看作是一个文件。例如,终端键盘是输入文件,显示器和打印机是输出文件。 13.1 C文件概述 C语言把文件看作是一个字符(或字节)序列,即由一个一个字符(或字节)数据顺序组成。 根据数据的组织形式,可分为ASCII代码文件和二进制文件: ASCII文件又称文本(text)文件,它的每一个字节放一个ASCII代码,代表一个字符。 二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。 13.1 C文件概述 如果有一个整数10000,在内存中占2个字节,如图: 用ASCII码形式输出与字符一一对应,一个字节代表一个字符,便于对字符进行逐个处理,也便于输出字符。但一般占存储空间较多,而且要花费转换时间(二进制形式与ASCII码间的转换)。用二进制形式输出数值,可以节省外存空间和转换时间,但一个字节并不对应一个字符,不能直接输出字符形式。 一般中间结果数据需要暂时保存在外存上以后又需要输入到内存的,常用二进制文件保存。 13.1 C文件概述 C文件不是由记录组成,C文件是一个字节流或二进制流。它把数据看作是一连串的字符(或字节),而不考虑数据的界限,这种文件称为流式文件。 C中对文件的存取是以字符(或字节)为单位的。输入输出的数据流的开始和结束仅受程序控制而不受物理符号(如回车换行符)控制。也就是说,在输出时不会自动增加回车换行符以作为结束的标志,输入时不以回车换行符作为数据的间隔。 C语言允许对文件存取一个字符,增加了处理的灵活性。 13.1 C文件概述 C当打开一个文件时,执行程序会自动打开三个标准文件---标准输入文件、标准输出文件和标准错误文件以及与这三个文件相连的三种流---标准输入流、标准输出流和标准错误流。 流是文件和数据区之间通信的通道。 C使用的磁盘文件系统是“缓冲文件系统”,所谓缓冲文件系统是指在程序的数据区和磁盘文件之间并不是直接通信的,而是通过缓冲区相联系的。缓冲区实际上是内存中的一空间。在输入数据时,先把数据从磁盘读到“输入缓冲区”中,等输入缓冲区已满或强制把它清空时再把其中的数据送到数据区进行处理。 13.1 C文件概述 处理后的数据要送入文件保存,也不是随处理随传送,而是先放到“输出缓冲区”,等输出缓冲区已满或强制将其清空时再把其中的数据送到磁盘文件。 也就是说不一定每执行一次输入/输出语句就实际访问磁盘文件一次,而是多次读写对应一次磁盘访问。缓冲区的大小因机器而异,且由系统自动设置,其大小一般为512字节或其整数倍。缓冲文件系统示意图如: 13.2 文件类型指针 要读写一个文件,必须知道与该文件有关的信息(如文件名,文件状态,文件当前的读写位置,文件缓冲区的大小与位置等等)这些信息被系统保存在一个结构体中,这个结构体中的信息组成了文件类型。 系统为该结构类型起了个专用的名字:FILE。 FILE类型的结构和操作系统有关,也就是说该结构的成员随系统对文件处理的方式的不同而不同。 Turbo C系统的文件结构类型为(在stdio.h文件中声明): 13.2 文件类型指针 ? struct FILE { int level; /*缓冲区被占用的程度*/ unsigned flags; /*文件状态标记*/ char fd; /*文件描述符*/ unsigned char hold; /*如无缓冲区,则不读取字符*/ int bsize; /*缓冲区大小*/

文档评论(0)

aena45 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档