- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十三章 文件处理 13.1 C语言中的文件 13.2 文件类型指针 13.3 文件操作 13.1 C文件概述 文件:存储在外部介质上的数据集合 C语言中的文件为流式文件,即把文件看作是一个有序的字符流。每个文件或者以文件结束标志结束, 如图13―1所示。 二进制文件的好处是:占用存储空间少;文件形式和内存形式一致,不需要转换,因而处理起来速度快。 操作系统对文件处理的方式 C语言目前使用的磁盘文件系统主要是“缓冲文件系统” 所谓缓冲文件系统是指在程序的数据区和磁盘文件之间并不是直接通信的,而是通过缓冲区相联系的。 所谓缓冲区,实际上也是内存中的一空间。在输入数据时,先把数据从磁盘读到“输入缓冲区”中,等输入缓冲区已满或强制把它清空时再把其中的数据送到数据区进行处理。 注意: 处理后的数据要送入文件保存,但这也不是随处理随传送的,而是先放到“输出缓冲区”,等输出缓冲区已满或强制将其清空时再把其中的数据送到磁盘文件。 也就是说不一定每执行一次输入/输出语句就实际访问磁盘文件一次,而是多次读写对应一次磁盘访问。缓冲区的大小随机器而异,且由系统自动设置,其大小一般为512字节或其整数倍。缓冲文件系统的示意图如图13―3所示。 13.2 文件类型指针 文件指针在缓冲文件系统中处理磁盘文件时重要的概念。 要运行一个文件,必须知道与该文件有关的信息,比如文件名,文件状态,文件当前的读写位置,文件缓冲区的大小与位置等等。 这些信息被系统保存在一个结构体中,这个结构体的信息组成了文件类型。 系统为该类型起了个专用的名字:FILE。FILE类型的结构和操作系统有关,也就是说该结构的成员随系统对文件处理的方式的不同而不同。 Turbo C系统的文件结构类型为: typedef struct { int level; /*缓冲区被占用的程度*/ unsigned flags; /*文件状态标记*/ char fd; /*文件描述符*/ unsigned char hold; /*如无缓冲区,则不读取字符*/ int bsize; /*缓冲区大小*/ unsigned char *buffer; /*文件缓冲区指针*/ unsigned cha r*curp; /*文件定位指针*/ unsigned istemp;/ *暂时文件指示器*/ short token; / *用于有效性检查*/ } FILE; C语言程序要求,在对一个文件进行处理时,需首先定义一个FILE类型的指针,即建立一个FILE类型的指针变量,该指针变量用于指向系统内存中的一个FILE类型的结构体(即文件信息区),结构体中保存着当前处理文件的相关信息。 文件指针的定义形式为: FILE *文件指针名 例如:FILE *fp1,*fp2,*fp[3]; 则文件指针fp1和fp2可以指向某个文件结构体而访问该文件。文件指针数组fp中有3个文件的信息。 13.3 文件操作 13.1 文件的打开与关闭 文件在使用之前必须打开,处理完之后必须关闭。 1.文件的打开 文件的打开是由调用fopen函数实现的,其格式为: 文件指针=fopen(文件名,打开方式) 文件指针即类型为FILE的指针变量; 文件名为系统文件名,是一个字符串; 打开方式也是个字符串,指出文件打开的目的。 FILE fp; fp= fopen(“a.txt”,”r”); 说明: 文件的打开方式列于表13―1中,其中列出了各种文件的打开方式,隐含的是打开ASCII文件,如果打开的是二进制文件,则增加一个字符b(binary)。其他字符的含义为:r代表read,用于读;w代表write,用于写;a代表append,用于追加。 说明: (1) 凡是打开方式字符串中含有字符“r”的,所打开的文件必须是已存在的文件,对不存在的文件不能打开读。 (2) 凡是打开方式中带有“w”字符的,所打开的文件可以是已经存在的,也可以是尚不存在的。若不存在时,则先要建立一个新文件,然后在里面写内容;若文件已经存在,则会把原文件的内容覆盖掉,写入新的内容。 (3)凡含有字符“a”,以追加方式打开的文件也可以不存在,若不存在则建立一
文档评论(0)