- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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;
您可能关注的文档
最近下载
- 福建省漳州第一中学(西湖校区)2024-2025学年高一下学期第一次阶段考试生物学试题(含答案).pdf VIP
- 心血管-肾脏-代谢综合征患者的综合管理中国专家共识(2025)解读PPT课件.pptx VIP
- YD∕T 5066-2017 -光缆线路自动监测系统工程设计规范.pdf VIP
- (高清版)B-T 17671-2021 水泥胶砂强度检验方法(ISO法).pdf VIP
- 骨科手术切口感染的预防与控制.pptx
- 人教版初一上册《化学》模拟考试卷及答案【可打印】.docx VIP
- 《宴席设计实务》(肖炜)教案 第6课 为西式宴席设计酒水.docx VIP
- 塔吊驾驶员安全培训试题及答案.doc VIP
- ASME BPVC-VII-2017 锅炉及压力容器规范 第七卷:动力锅炉维护推荐指南 国外国际标准.pdf VIP
- GB_T 17671-2021水泥胶砂强度检验方法(ISO法).docx VIP
文档评论(0)