- 1、本文档共102页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第12章文件操作精要
第12章 文件操作 12.1 文件概念 文件是根据特定目的而收集在一起并存储在外部介质上的有关数据的集合。其中外部介质可指硬盘、软盘、磁带、屏幕等。 以前各章中,我们所用到的输入和输出,都是以终端为对象的,即从终端键盘输入数据,运行结果输出到终端上。从操作系统的角度看,每一个与主机相连的输入输出设备都可以看作是一个文件。例如,终端键盘是输入文件,显示器和打印机是输出文件。 在程序运行时,常常需要将一些数据(运行的最终结果或中间数据)输出到磁盘上存放起来,以后需要时再从磁盘中输入到计算机内存。这时,就要用到磁盘文件。 C语言把文件看作是一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。根据数据的组织形式,可分为文本文件和二进制文件两类。 1. 文本文件 文本文件也称为ASCII文件,是指由字符组成的文件,每个字符用其相应的ASCII码存储。这种文件在磁盘中存放时每个字符对应1个字节,用于存放对应的ASCII码。例如,数5678的存储形式为 ASCII码 0011011000111000 ↓ ↓ ↓ ↓ 十进制码 5 6 7 8 共占用4个字节。 文本文件可在屏幕上按字符显示,例如源程序文件就是文本文件,用DOS命令TYPE可显示文件的内容。由于是按字符显示,因此能读懂文件内容。 2. 二进制文件 二进制文件是按二进制的编码方式来存放文件的。例如,数5678的存储形式为 00101110,只占2个字节。二进制文件虽然也可在屏幕上显示,但其内容无法读懂。C语言系统在处理这些文件时,并不区分类型,将其都看成是字符流,只按字节进行处理。 用文本文件形式输出与字符一一对应,一个字节代表一个字符,因而便于对字符进行逐个处理,也便于输出字符。但一般占存储空间较多,而且要花费转换时间(二进制形式与ASCII码间的转换)。 用二进制形式输出数据,可以节省外存空间和转换时间,但一个字节并不对应一个字符,不能直接输出字符形式。一般中间结果数据需要暂时保存在外存中,以后又需要输入到内存,常用二进制文件保存。 12.2 文件指针 1. FILE结构体 C语言在使用文件时,系统会在内存中为每一个文件开辟一个区域,用来存放文件的有关信息(如文件的名字、文件状态以及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体名为FILE。Turbo C在stdio.h头文件中有FILE类型的声明: typedef struct { int _fd; /* 文件号 */ int _cleft; /* 缓冲区中剩下的字节数 */ int _mode; /* 文件操作模式 */ char * _nextc; /* 下一个字节的位置 */ char * _buff; /* 文件缓冲区位置 */ }FILE; 2. 文件类型指针的定义 用FILE类型可以定义文件类型的指针,例如: FILE *fp; fp为指向结构体类型的指针变量,可以指向一个可操作的文件。换句话说,一个文件有一个文件变量指针,今后对文件的访问,会转化为针对文件变量指针的操作。 如果程序中同时要处理几个文件,则应该定义几个文件类型指针,例如: FILE *fp1 , *fp2 , *fp3 ; 12.3 打开和关闭文件 12.3.1 文件的打开(fopen函数) 1. fopen函数的调用方式 ANSI C规定了标准输入输出函数库,用fopen函数实现文件的打开。fopen函数的调用方式通常是 FILE *fp; fp=fopen(文件名, 使用文件方式); 例如: FILE *fp; fp=fopen(doc.txt,r); 它表示要打开名字为doc.txt的文件,文件使用的方式是“只读”,也就是文件doc.txt只能读不能写,用户不能修改文件中的内容。 2. 文件名的说明 对于文件名的使用,应注意以下两个方面。 (1) 文件名必须用双引号括起来,如果在当前目录下使用一个文件,则可以不加路径,详见前面的例子。 (2) 如果使用的文件不在当前目录下,则有两种情况。 ① 如果在当前目录的子目录下使用某一个文件,则必须加上相对路径。例如,在当前目录下有一个子目录test,如果要以只读方式使用test目录下的一个文件fi
文档评论(0)