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

* 第11章 文件 11.1 文件概述 11.1.1 文件 从操作系统的概念看,文件是指存放在外存储器上的信息的集合。文件名称是由文件名和扩展名两部分组成的。从广义上讲,文件是指信息输入和输出的对象,磁盘文件、键盘(CON)、显示器、打印机(PRN)等均可视为文件。将物理设备看做是一种逻辑文件,用与磁盘文件操作相同的命令进行操作的做法,可以简化程序设计。 11.1.2 数据文件的存储形式 (1)以字符形式存储,称为字符文件或文本文件 (2)以二进制代码形式存储,称为二进制文件 例如:2978这个整数,在字符文件中用其ASCII码表示为: 56 55 57 50 ‘2’ ‘9’ ‘7’ ‘8’ 而在二进制文件中,该数表示成相应的二进制数字: 101110100010 一般来说,二进制文件节省存储空间,并且由于在输入时不需要把字符代码先转换成二进制形式再送入内存,在输出时也不需要把数据由二进制形式转换为字符代码再输出,因而输入输出速度快。 用户程序在实用中,从节省时间和空间的要求考虑,一般选用二进制文件。但是如果用户准备的数据是作为文档使用阅读的,则一般使用字符文件,它们可以方便、快捷的通过显示器或打印机直接输出。 11.1.3 标准文件与非标准文件 由于相对于内存储器而言,磁盘是慢速设备。在C语言的文件操作中,如果每向磁盘写一个字节或读出一个字节的数据,都要启动磁盘操作,将会大大降低系统的效率,而且还会对磁盘驱动器的使用寿命带来不利影响。为此在文件系统中使用缓冲技术,即系统在内存中为每一个正在读写的文件开辟一个“缓冲区”,利用缓冲区完成文件读写操作。 程序数据区 输入缓冲区 内存 磁盘文件 程序数据区 输出缓冲区 内存 磁盘文件 (a)读磁盘文件 (b)写磁盘文件 这种利用缓冲区将对磁盘文件的频繁逐次访问变为批量访问的做法称为标准文件操作,对应的磁盘文件系统称为缓冲文件系统,也称标准文件系统或高层文件系统。不使用缓冲区的磁盘文件系统称为非缓冲文件系统,也称非标准文件系统或低层文件系统。 11.2 标准文件操作 11.2.1 标准文件FILE结构指针 FILE数据结构一般定义在stdio.h头文件中: typedef struct{ short level; unsigned flags; char fd; unsigned char hold; short bsize; unsigned char *buffer; unsigned char *curp; unsigned istemp; short token; }FILE; FILE *fp; 定义了一个FILE结构体变量,当程序打开一个文件,就得到对应FILE结构指针。只要把该指针赋给指针变量fp,fp就指向了这个FILE结构体变量,也就是指向这个文件了。 11.2.2 标准文件的打开操作 C语言程序标准文件的打开操作用fopen()函数实现,调用格式为: FILE *fopen(char *filename, char *mode); fopen()打开一个filename指向的文件,文件操作方式由mode的值决定。 例如,fopen(“datafile.dat”, “r”); 表示打开名为datafile.dat的文件,文件操作方式设定为”只读” 如果文件打开成功,返回一个指向该文件的指针,如果不成功,返回一个NULL值 。 if((fp=fopen(“file1”,”r”))= = NULL) { printf(“file1 cannot be opened\n”); exit(0); } 下面的程序打开一个由路径指明的文件: FILE *fp; if((fp=fopen(“c:\\chen\\student1.dat”,”wb+”))==NULL) { printf(“File cannot be opened\n”); exit(1); } else { printf(“File opened for writeing and reading \n”); … } 说明: (1)”r”只能从文件读取,并且文件要存在,否则出错;打开时,指针移到文件开头; (2)”w”只能写入数据到文件,若文件存在,则删去重新创建;若不存在,则新建一个; (3)”a”添加数据,若文件不存在,则新建,否则打开时,文件位置指针移到文件末尾; (4)”r+”、”w+”、”a+” (5)”rb”、”wb”、”ab”、”rb+”、”wb+”、”ab+” 系统定义了5个FILE结构指针变量,它们如下表: stderr 标准错误输出(显示器) stdprn 标准打印 stdaux 辅助输入

文档评论(0)

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

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

1亿VIP精品文档

相关文档