第12章 文件3.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第12章 文件3

* * 文件分类  缓冲文件系统 文件的指针 文件打开与关闭 文件应用 第12章 文件 ★ 内容提要: 文本文件与二进制文件 缓冲文件系统概念 文件的指针 文件的打开与关闭 文件应用 第 12 章 文件 文件是指存储在外部介质 上,且按文件名访问的一组 信息序列。 一、文件分类 ? 文本文件(字符代码文件或 ASCII 代码文件) 由一个一个字符组成,每一个字符用一个 ASCII 代码表示, 如 123.45 以 ASCII 代码形式 存储到磁盘需要 6 个字节。 特点: 可通过显示器或打印机显示,即可读, 比较直观。 一、文件分类 ? 非文本文件(二进制文件 ): 是指以数据 在内存中的存储形式原样输出存储到磁盘上的 文件。如 123.45 在内存中以浮点数形式存储占 4 个字节,不管一个实数多大都占 4 字节。 特点: 节省存储空间, 输入输出无需转换 速度快,不便阅读。 说明: ? 一个 C 文件是一个字节流或二进制流,它把 数据看作是一连串的字符序列(字节),而不 考虑记录的界限,即 C 文件并不是由记录组成的。 ? 由于对文件的操作要与各种外部设备发生联 系,因此对文件的输入输出(读写)过程是通 过操作系统来实现的。对文件的读写都是通过 标准的 I/O 函数进行的。 二、缓冲文件系统 ( 标准 I/O) 和非缓冲文件系统 ? 缓冲文件系统(又称标准或高层文件系统) 特点 : 对程序中的每一个文件都在内存中开辟 一个 “ 缓冲区 ” 。 作用 : 从磁盘文件读入的数据先送到 “ 输入缓 冲区 ” 中,然后再从缓冲区依次将数据送给接 收变量。 在向磁盘文件输出数据时,先将程序数据区中变量 或表达式的值送到 “ 输出文件缓冲区 ” 中,待装满后 才一起输出给磁盘文件。目的减少对磁盘的读写次数, 即一次可以读入一批数据或输出一批数据。 输入文件缓冲区 (512 KB) 输出文件缓冲区 (512 KB) 变量 a 程序数据区 磁盘 文件 读 写 内存 二、缓冲文件系统 ( 标准 I/O) 和非缓冲文件系统 ? 非缓冲文件系统: 不由系统自动设置所需 缓冲区,而由用户自己根据需要设置。 新的 ANSI 标准只建议使用缓冲系统,并对 缓冲文件系统的功能进行了扩充,使既能用于 处理字符代码文件,也能处理二进制文件。 三、文件型指针类型 对文件的操作是通过文件指针实现的。关键 的概念是 “ 文件指针 ” 。 调用一个文件需要的信息: ? 文件当前读写的位置; ? 与该文件对应的内存缓冲区的地址; ③ 缓冲区未被处理的字符数 ( 字符指针 ) ; ? 文件的操作方式等 三、文件型指针类型 系统内部定义了一个称 FILE 的结构型类型。 typedef struct{ int _fd; // 文件号 int _cleft; // 缓冲区中剩余的字符 int _mode; // 文件操作模式 char *_nextc; // 下一个字符位置 char *_buff; // 文件缓冲区位置 } FILE; 四、文件的打开和关闭 文件必须先打开后,并及时关闭。 1 . 打开文件: 是在用户程序和操作系统之 间建立起联系,程序要把操作的文件的一些信 息通知操作系统,如文件名、文件操作方式 (读 / 写): 读文件 : 需要先确认此文件是否已存在,并 将读当前位置设定为文件的开头。 写文件 : 需要检查原来是否有同名文件,如 有则将该文件原有内容删除,如无同名文件就 建立一个新文件,然后将写当前位置设定于文 件的开头,以便从文件开头写入数据。 1. 文件的打开方式 : FILE *fp; if((fp=fopen( 文件名 , 使用文件方式 ))== NULL){ printf(cannot open this file. \ n); exit(0); } 说明: ? 文件名可以是字符串常量、数组名或字符指针。 ? 使用文件方式参见附表。 FILE *fp; if((fp=fopen( 文件名 , 使用文件方式 ))== NULL){ printf(cannot open this file. \ n); exit(0); } 文件输入 / 输出 缓冲区 …………… …………… 用户程序与数据区 磁盘 文件 读 / 写 内存 fp _ fd 文件号 _ cleft 缓冲区中剩余 的字符 _ mode 文件操作方式 *_ nextc 下一个字符位 置(指针) *_ buff 文件缓冲区位 置(指针) FILE 相应的结构变量 程序与外部 文件的联接 示意图,具 体操作由文 件管理系统 负责 文件输入 / 输出 缓冲区 …………… …………… 用户程序与数据区 磁盘 文件 读 / 写 内存 fp _ fd 文件号 _

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档