版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计主编:连卫民何樱第11章文件本章主要内容:11.1文件概述11.2文件处理(重点)11.3文件程序设计举例(重点)本章教学要求:了解文件的定义及分类
熟悉文件的处理流程
掌握常用的文件处理函数的使用方法及其程序设计方法
11.1文件的基本概念本节主要介绍文件的定义及分类、缓冲文件系统、文件的处理过程、文件程序解决的问题。
11.1.1文件的定义与分类所谓“文件”是指存储在外部介质上的数据集合。1.按文件内容划分从存储内容上看,文件分为两大类:程序文件和数据文件。程序文件中存储的是程序代码或计算机指令;数据文件中只包含程序文件处理的数据,通常用来保存大量数据。2.按存储方式划分从存储方式上看,文件可分为文本文件和二进制文件。文本文件以字符形式存储数据(即存放其ASCII码),又称为ASCII文件;二进制文件是按数据在计算机内的存储形式(二进制代码)存放数据的。
第11章文件11.1文件的基本概念11.1.1文件的定义与分类3.按存储介质划分从存储介质上看,文件可分为磁盘文件、磁带文件、光盘文件以及打印文件等。4.按读写方式划分文件的读写方式可分为顺序读写方式和随机读写方式。顺序读写是指从文件头开始,依次读/写文件的内容;随机读写是指根据需要从任意位置进行读/写文件的内容。第11章文件11.1文件的基本概念11.1.2文件程序解决的问题文件的特点:存取方便容易,外存容量大。数据可以重用。数据共享几乎无限制。
第11章文件11.2文件处理11.2.1缓冲文件系统缓冲文件系统是指系统自动对每个正在使用的文件在内存中开辟一个“缓冲区”,当从磁盘文件输入的数据时,先将文件中的数据送到“输入缓冲区”中,然后再从“输入缓冲区”依次将数据送给接收变量;在向磁盘文件输出数据时,先将输出数据送到“输出缓冲区”中,等装满缓冲区后才一起输出给磁盘文件,如图11-1所示。缓冲文件系统既可以处理文本文件,也可以处理二进制文件。
缓冲文件系统为每个正在使用的文件开辟一个“文件信息区”,用来存放文件的有关信息。“文件信息区”的这些信息保存在一个结构体类型的变量中,该结构体类型命名为FILE,其定义形式如下:typedefstruct{......}FILE;
第11章文件11.2文件处理11.1.2缓冲文件系统当程序中用到某个文件,系统就为此文件开辟一个FILE类型的变量存储空间。但是,这个存储空间通常不用变量名来标识,而是设置一个指向该结构体变量的指针变量,通过它来访问该结构体变量(信息区)。这个指针变量就是文件指针。例如:FILE*fp1,*fp2,*fp3;这样就定义了三个指针变量fp1、fp2、fp3,它们都是指向FILE类型结构体数据的指针变量。如果把某一个文件信息区的起始地址赋给fp1(或fp2、fp3),fp1就指向该信息区(如图11-2所示)。通过fp1、fp2、fp3就可以访问相应文件的信息区,从而达到操作有关文件的目的。
第11章文件11.2文件处理11.2.2文件的处理过程文件在使用前要打开,使用后要关闭。打开文件的过程就是使文件指针指向外存中某一文件的过程,通过文件指针实现对文件的读/写操作。关闭文件的过程就是切断文件指针与外存中某一文件联系的过程,文件操作结束。文件的处理过程如图11-3所示。
文件的处理步骤为:(1)打开文件:使用函数fopen()。(2)读或写文件:读函数:fgetc()、fgets()、fscanf、()fread()、getw()。写函数:fputc()、fouts()、fprintf()、fwrite()、putw()。(3)关闭文件:使用函数fclose()。第11章文件11.2文件处理11.2.2文件的处理过程数据的处理形式有:(1)直接处理形式。键盘→内存变量→显示器。把数据从键盘录入后进行处理,处理结果送显示器显示。适用数据量小,数据不需要保存的情况。(2)写文件处理形式。键盘→内存变量→文件指针→OS→外存(文件)。这样可以把大量的或以后再用的数据保存下来。(3)读文件处理形式。文件名→OS→文件指针→内存变量→显示器。这样可以把存放在文件中的数据通过文件指针调入内存,处理后,输出到显示器上。(4)修改文件处理形式。文件名→OS→文件指针→内存变量→文件指针→OS→文件名(或设备名)。这样可以把存放在文件中的数据调入内存,处理后,再写入文件中。文件的处理步骤:(1)打开文件(2)读或写文件(3)关闭文件第11章文件11.2文件处理11.2.3文件处理采用的函数1.文件打开函数文件在使用之前必须先打开。所谓“打开”是在程序和操作系统之间建立起联系,程序把所要操作文件的一些信息通知给操作系统。文件打开用fopen函数实现。它的一般使用方法为:FILE*fp;fp=fopen(filename,mode);第11章文件11.2文件处理11.2.3文件处理采用的函数2.文件读取函数读文件就是从文件往内存中读取数据。根据存储数据的形式不同可以采用以下读取函数来实现文件的读取。(1)fgetc函数使用格式:ch=fgetc(fp);该函数从fp指向的文件中读取一个字符并将它保存在变量ch中。其中,fp是已定义的文件指针变量。如果读到文件末尾或出错时,该函数返回文件结束标志EOF。EOF是在stdio.h头文件中定义的宏,其值为-1。第11章文件11.2文件处理11.2.3文件处理采用的函数2.文件读取函数读文件就是从文件往内存中读取数据。根据存储数据的形式不同可以采用以下读取函数来实现文件的读取。(2)fgets函数使用格式:fgets(str,n,fp);该函数从fp指向的文件中读取n-1个字符并将其保存在str指定的内存单元中,并在其后自动追加结束标志'\0'。其中,fp是已定义过的文件指针变量。函数执行成功时返回0,失败时返回非0值。第11章文件11.2文件处理11.2.3文件处理采用的函数2.文件读取函数读文件就是从文件往内存中读取数据。根据存储数据的形式不同可以采用以下读取函数来实现文件的读取。(3)fscanf函数使用格式:fscanf(文件指针,格式字符串,输入表列);该函数从文件指针指向的文件中读取格式化的数据。“格式字符串”和“输入表列”的写法及用法与scanf函数的完全相同。第11章文件11.2文件处理11.2.3文件处理采用的函数3.文件写入函数写文件就是将内存中需要保存的数据写入外存。根据存入数据的形式不同,可以采用以下写入函数来实现写文件。(1)fputc函数使用格式:fputc(ch,fp);该函数将字符ch输出到fp所指向的文件中。fp是已定义的文件指针变量,它的值是用fopen函数打开文件时得到的;ch是要写的字符。函数执行成功时返回被输出的字符,否则返回EOF。第11章文件11.2文件处理11.2.3文件处理采用的函数3.文件写入函数写文件就是将内存中需要保存的数据写入外存。根据存入数据的形式不同,可以采用以下写入函数来实现写文件。(2)fputs函数使用格式:fputs(str,fp);该函数把str表示的字符串写入到由fp指向的文件中(不写字符串结束符'\0')。str可以是一个字符数组的名字、字符指针变量或字符串常量fp是已定义过的文件指针变量。函数执行成功时返回0,失败时返回非0值。第11章文件11.2文件处理11.2.3文件处理采用的函数3.文件写入函数写文件就是将内存中需要保存的数据写入外存。根据存入数据的形式不同,可以采用以下写入函数来实现写文件。(3)fprintf函数使用格式:fprintf(文件指针,格式字符串,输出表列);该函数把格式化的数据写入由文件指针指向的文件中。“格式字符串”和“输出表列”的写法及用法与printf函数的完全相同。说明:以上介绍的文件处理常用函数的原型都在stdio.h中定义。第11章文件11.2文件处理11.2.3文件处理采用的函数4.文件关闭函数关闭文件就是在文件处理完之后,切断缓冲区与外存文件的联系。使用的函数是fclose(),其一般格式是:fclose(文件指针);当顺利执行了关闭操作时,函数返回值为0,否则返回一个非0值。该函数一次只能关闭一个文件,若要关闭多个文件,必须使用多次。第11章文件11.3文件程序设计实例本节主要介绍文件的建立、文件的读取、文件的修改、文件的复制等程序的设计方法。11.3.1文件的建立通过fopen函数的写入方式打开一个不存在的文件,就可建立一个新文件。【例11-1】从键盘输入若干行字符,把它们写到磁盘文件上保存。分析:此时建立的文件是用来保存字符的,可建立一个文本文件。该问题要求处理的是若干行字符,每行字符可看作是一个字符串,于是可采用键盘读入函数fgets和文件写入函数fputs来实现。第11章文件输入完所有字符串后,在最后一行的开头输入一个“回车”键,此时字符串长度为0,结束循环,关闭文件,终止程序。由于fputs函数不会自动在输出一个字符串后换行,所以必须单独用一个fputs函数输出一个'\n',以便以后从文件中读取数据时能区分开各个字符串。此时,到该源程序所在的目录下查看,可以看到文本文件file1.txt,打开该本文文件,里面的内容正是刚才从键盘上输入的字符串。11.3文件程序设计实例11.3.1文件的建立【例11-2】假设某班级学生的考试成绩表中包括:学号,姓名,成绩。试设计程序建立一个成绩表文件。分析:成绩表中每个学生记录可用一个结构体变量表示,学生人数可由键盘输入。于是可采用循环,每次由键盘输入一个学生记录后直接写入磁盘文件中进行保存。这里按记录(既数据块)进行文件的读写,用到有关函数fread和fwrite。调用形式为:fread(buffer,size,count,fp);fwrite(buffer,size,count,fp);说明:buffer是一指针变量,它表示读写数据在内存中存放的起始地址;size表示要读写数据的字节数据;count表示是读写多少个size字节的数据项;fp表示已定义的指针变量。如果fread或write调用成功,则函数返回值为count的值,即读写完整数据项的个数;否则返回值为-1。
第11章文件11.3文件程序设计实例11.3.2文件的读取文件建立后,如果要观看文件的内容,可进行文件读取操作。【例11-3】从磁盘文件file1.txt(例11-1建立的)中读回字符串,并在屏幕上显示出来。分析:首先对file1.txt以只读方式打开;由于该文件为文本文件,存放着若干个字符串,于是可用fgets函数读出各个字符串,而后在屏幕显示出来即可。但需注意:文件使用之后必须关闭。第11章文件11.3文件程序设计实例11.3.2文件的读取【例11-4】对于由例11-2建立的student.dat文件,读取其单号学生数据后在显示器上输出。分析:在该问题中要对文件中的特定数据进行操作,这就需要对文件进行随机读取,此时用到文件定位函数fseek。它的作用是使位置指针移动到所需的位置。使用fseek函数的一般格式如下:fseek(文件类型指针,位移量,起始点);“起始点”是以什么地方为基准进行移动,必需是以下值之一:0(或SEEK_SET):代表文件开头1(或SEEK_CUR):代表位置指针的当前位置2(或SEEK_END):代表文件末尾“位移量”是指以“起始点”为基点移动的字节数。如果它的值是正值,表示向前移,即从文件开头向文件末尾移动;如是负数,表示向后移,即由文件末尾向文件开头移动。位移量应为long型数据,这样当文件长度很长时(如大于64K)不致出错。
第11章文件11.3文件程序设计实例11.3.3文件的修改如果要改变文件中的有关数据,则称为文件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 培训机构学员协议合同范本 专业版 2篇
- 桶装水合作协议书
- 债权协议书范本
- 劳动合同电子版模板简短
- 借款合同担保人承担的责任完整版
- 公司与个人运输合同范本版
- 2024年度钢管及扣件环保检测合同3篇
- 联营合同协议书范本
- 如何进行压力情绪管理(博商课件)
- 农民工资金监管协议
- 《民法典》全文学习PPT
- GB_T 22627-2022水处理剂 聚氯化铝_(高清-最新版)
- 小学一到六年级的所有日积月累和读读背背还有古诗及文言文加上四字词大全
- 大坝防渗墙注水试验报告
- 废旧物资回收总体服务方案
- 不锈钢水箱检验报告模板内部信息可改
- 海康设备错误代码【精选文档】
- 扫描电镜原理和应用.
- 光电效应测定普朗克常数.ppt
- 奶茶店项目投资可行性分析报告
- 正山小种的特点
评论
0/150
提交评论