- 1、本文档共93页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 C语言文件
文件是计算机中经常使用的一个重要概念。本章在叙述文件概念的基础上,介绍文 件的基本操作和应用,讲解文件操作的基本过程,使读者熟悉C语言中有关文件处理的库函数。 学习重点: ? ?文件指针 ? ?文件的读写 9.1.1 文件的定义 文件是指存储在外部介质(如磁盘和磁带等外存储器)上的数据或信息的集合。例如:源程序文件中保存着源程序,文本文件中保存着文本数据,声音文件中保存着声音数据等。 为标识一个文件,每个文件都必须有一个文件名,其一般结构为: 主文件名[.扩展名] 文件命名规则遵循操作系统的约定。计算机通过文件名对文件进行读、写、修改和删除等操作。 C语言实现文件操作的途径主要有两种:一是通过操作系统。由于操作系统是以文件为单位对数据进行管理的,因此可以直接引用操作系统的系统调用,这属于低级的操作,使用方法相对复杂,在现在的程序设计中已经很少使用;二是通过由C语言编译系统提供的一套用于文件操作的库函数,也称为“标准输入/输出库”。本章介绍通过标准输入/输出库来使用文件。 9.1.2 文件的分类 可以从不同的角度对C语言的文件进行分类: (1) 从用户的角度看,文件可分为普通文件和设备文件。 普通文件是指驻留在磁盘或其他外部介质上的数据集合,可以是源文件、目标文件、可执行程序,也可以是一组待输入处理的原始数据或一组输出的结果。 设备文件是指与主机相连的各种外部设备,如显示器、打印机、键盘等。在操作系统中,外部设备也被看做是一个文件,并对其进行管理,将它们的输入、输出等同于对磁盘文件的读和写。 通常把显示器定义为标准输出文件,一般情况下在屏幕上显示有关信息就是向标准输出文件输出。如前面经常使用的printf、putchar函数就是这类输出。 键盘通常被指定为标准的输入文件,从键盘上输入就意味着从标准输入文件上输入数据。scanf、getchar函数就属于这类输入。 (2) 从数据组织形式的角度来看,文件可分为ASCII文件和二进制文件。 数据的组织形式是指数据在磁盘上的存储形式。 ASCII文件又称文本(TEXT)文件,它的数据是采用ASCII码形式存储的。每一个字节放一个ASCII代码,代表一个字符。这样的好处是便于对字符进行逐个处理,也便于输出字符。劣势是占存储空间较多,而且要花费转换时间(二进制形式与ASCII码间的转换)。 二进制文件与ASCII文件不同,它是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。这样可以节省外存空间和转换时间,但一个字节并不对应一个字符,不能直接输出字符形式。 图9-1 int型十进制数1024的存储形式 例如:int型的十进制数1024用ASCII形式输出要占用4个字节;若按二进制形式输出则只占用2个字节。如图9-1所示。 (3) 从C语言对文件处理方法的角度来看,可以将文件分为缓冲文件系统和非缓冲文件系统。 所谓“缓冲文件系统”,是指系统自动地在内存区为每个正在使用的文件开辟一个缓冲区。从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后再一起送到磁盘去。 如果从磁盘向内存读入数据,则一次从磁盘文件将一批数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(给程序变量),如图9-2所示。缓冲区的大小由各个具体的C语言版本确定,一般为512字节。 图9-2 文件的写入—写出 所谓“非缓冲文件系统”,是指系统不自动开辟确定大小的缓冲区,而由程序为每个文件设定缓冲区。 用缓冲文件系统进行的输入/输出又称为高级磁盘输入/输出,用非缓冲进行的输入/输出又称为低级输入/输出系统。ANSI C标准不采用非缓冲文件系统,而只采用缓冲文件系统。也就是说,既用缓冲文件系统处理文本文件,也用它来处理二进制文件。 本章只介绍ANSI C标准中的缓冲文件系统及其相关的库函数。 在缓冲文件系统中,涉及到的关键概念是“文件指针”。 对每个正在使用的文件都要定义一个FILE结构体类型变量,该变量用于存放文件的有关信息,如文件名、文件状态等。 FILE结构体类型不需要用户自己定义,它是由系统事先定义的,固定包含在头文件stdio.h中。其类型定义如下: typedef struct { short level; /*缓冲区“满”或“空”的程度*/ unsigned flags; /*文件状态标志*/ char fd; /*文件描述符*/ unsigned c
您可能关注的文档
- 第7章 使用NTFS文件系统管理资源.ppt
- 第6课殖民扩张与世界市场的拓展 公开课课件.ppt
- 第7章 外部性.ppt
- 第7.6节 地铁工程的防水.ppt
- 第7章 文件的上传与下载.ppt
- 第7章 网络与安全10工程.ppt
- 第7章 统计描述.ppt
- 第7章 稳态导热.ppt
- 第7章 恒定磁场(经管,计算机系).ppt
- 第7章--数据库系统.ppt
- 2025年安徽城市管理职业学院招聘专职辅导员10人备考试题及答案解析.docx
- 2025台州天台县住房和城乡建设局下属事业单位选聘2人备考试题及答案解析.docx
- 2025年海工安全培训考试题及答案解析.doc
- 2025山西吕梁市交城县社区专职网格员选聘社区专职工作人员备考试题及答案解析.docx
- 2025年湖南益阳职业技术学院第二次人才招聘7人备考试题及答案解析.docx
- 2025江西吉安市井冈山市柏露乡人民政府招聘1人备考试题及答案解析.docx
- 世界卫生日完整版解读ppt.pptx
- 2025北京北投集团“毕业季”校园招聘17人备考试题及答案解析.docx
- 2025年甘肃省庆阳林业学校招聘事业编制工作人员备考试题及答案解析.docx
- 2025贵州铜仁市直事业单位选聘事业单位工作人员23人备考试题及答案解析.docx
文档评论(0)