《第11章文件.docVIP

  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文档。上传文档
查看更多
《第11章文件

第11章 文件 大部分程序都需要输入输出数据。当需要输入少量数据时,我们可以通过键盘等输入设备入。但是输入时,我们就得从事先建立的文件中读入数据。同样,程序有大量数据输出时,也可以将数据保存在文件中。文件(file)一般是指存储在某种介质(硬盘、光盘等)上的数据的集合。每个数据集有一个名称,文件名。程序要从文件中读取数据或者保存数据到文件,就必须先按文件名找到指定的文件。建立文件时,首先就是要确定文件名。 11.1 将学生成绩写入文件 11.1.1代码分析 【例11.1】 把赵明同学的成绩保存到score.txt源代码#include stdio.h void main( ) { FILE *fp; /* 定义文件类型指针fp */ fp=fopen(score.txt,w); /* 打开或创建文件score.txt */ fprintf(fp,%s,2010054000 赵明 98); /* 写文件 */ fclose(fp); /* 关闭文件 */ }编译并运行上述程序后,可以看到在源代码所在目录下新建了一个score.txt文件,其内容为2010054000 赵明 98如图11.1 图11.1 score.txt内容 程序中的函数fopen、fprintf、fcolse是系统提供的库函数,其函数原型在stdio.h中进行声明,须使用#include stdio.h把头文件stdio.h包含到源代码中。 11.1.2文件概述 在C语言中,文件被看作是一个数据序列。根据数据在介质上存储的编码形式,文件可分为文本文件和二进制文件。文本文件是由代表字符的ASCII码顺序组成,又称为字符文件,它的每个字节空间存储一个ASCII码。二进制文件是由二进制值0、1组成,直接按数据在内存中的存储形式直接保存在存储介质中。 例如,整数8000,其二进制值为1111101000000,在内存中占2个字节。如果这个值存储在文本文件中,则文件内容按ASCII码形式存储占4个字节:0x38、0x30、0x30、0x30,它们分别是8、0、0、0的ASCII码值;而如以二进制文件存储,文件内容以二进制数0x1F40的形式存储,只占2个字节,如图11.2。 图11.2 数据在内存中的两种形式 用文本文件存储数据,一个字节代表一个字符,可以很方便对字符逐个处理,也方便输出字符,但是占用较大的存储空间。用二进制文件比较节约存储空间,但是不能直接按字符形式输出。因此一般用二进制文件存储不需要用来按字符处理的数据。选择哪一类文件存储数据,需根据实际问题来决定,但是在建立或打开文件时就要定义好文件类型。 目前C语言所使用的磁盘文件系统有两大类:一类称为缓冲文件系统,又称为标准文 件系统;另一类称为非缓冲文件系统。按照缓冲文件系统特性,系统自动在内存区为每一个正在使用的文件开辟一个缓冲区,C程序对文件的操作就是通过对缓冲区的操作来完成。读文件操作时,一次从磁盘文件将一些数据输入到缓冲区,然后再从缓冲区逐个地将数据送给接收变量;写文件操作时,程序先将数据送到缓冲区,装满缓冲区后才一起送到磁盘去。用缓冲区可以一次读入一批数据,或输出一批数据,而不是执行一次输入或输出函数就去访问一次磁盘,这样做的目的是减少对磁盘的实际读写次数,避免了每一次读写都要移动磁头寻找磁道扇区,浪费一定的时间。 缓冲文件系统中缓冲区的大小由各个具体的C 版本确定,一般为512 Byte。 非缓冲文件系统不由系统自动设置缓冲区,程序设计者必须自己设定一个缓冲区并考虑如何使用它们。 1983 年,ANSI C 标准决定不采用非缓冲文件系统,而只采用缓冲文件系统。缓冲文件系统可用来处理文本文件,也可用来处理二进制文件。 11.1.3文件类型指针 在例11.1中,语句FILE *fp;定义了一个FILE类型的结构体指针变量fp。FILE类型是用typedef语句定义的一种自定义的结构体类型,该结构体类型已经在头文件stdio.h中定义,以下是FILE类型的说明: typedef struct { short level; /* 缓冲区空或者满的程度 */ unsigned flags; /* 文件状态标志 */ char fd; /*文件描述符 */ unsigned char hold;

文档评论(0)

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

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

1亿VIP精品文档

相关文档