C语言程序设计(最新版)精品PPT课件.ppt

上传人:牧羊曲112 文档编号:2139291 上传时间:2023-01-17 格式:PPT 页数:53 大小:419KB
返回 下载 相关 举报
C语言程序设计(最新版)精品PPT课件.ppt_第1页
第1页 / 共53页
C语言程序设计(最新版)精品PPT课件.ppt_第2页
第2页 / 共53页
C语言程序设计(最新版)精品PPT课件.ppt_第3页
第3页 / 共53页
C语言程序设计(最新版)精品PPT课件.ppt_第4页
第4页 / 共53页
C语言程序设计(最新版)精品PPT课件.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《C语言程序设计(最新版)精品PPT课件.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计(最新版)精品PPT课件.ppt(53页珍藏版)》请在三一办公上搜索。

1、第10 章 文件及其应用,主要内容,文本文件的读写二进制文件的读写文件的定位与随机读写,文本文件的读写,应知:-文件的分类-文本文件读写的步骤-文本文件读写函数的功能及函数参数的含义应会:-文本文件的打开、读写、关闭-将单个字符、字符串进行文件读写,进行文件复制等程序的编写 难点:-文件的读写,英文词汇,File 文件Read 读 Write 写Buffer 缓冲区,提 问,指针变量的数据类型如何确定?指针变量作为函数参数时,值或地址传递?创建链表的算法?,知识回顾:线性链表,简单叙述输出链表所有结点的数据域(遍历)的算法思路定义一个结点类型的指针变量current作为循环变量,并赋初始值为p

2、Head,指向链表头结点.输出current所指向结点的数据.将current指向下一个结点.循环结束条件是current=NULL.,学一学:文件基础知识,对文件的操作只有读和写两种,通常情况下,将内存中的数据写入到文件,称为文件的输出;将文件中的数据读入到内存称为文件的输入。C语言中,以缓冲文件系统方式读写文件的步骤为定义文件指针;打开文件;读写文件;关闭文件。,学一学,1定义文件指针 一般形式为:FILE*fp;其中fp就是所定义文件指针。FILE类型以及所有的文件读写函数和相关常量都定义在文件stdio.h中,在源程序的开头要包含头文件 stdio.h。,学一学,2打开文件 C语言中,

3、使用fopen函数来打开文件。fopen函数的调用形式:fopen(chFileName,mode);以mode 方式打开文件chFileName。其中,参数chFileName 是将要读写文件的文件名,mode为文件的操作方式。若文件打开成功,返回一个文件指针,若打开失败,则返回空值NULL,NULL在stdio.h中被定义为0。文件操作方式mode是一个整数,其取值及含义如表10-1所示。,学一学,学一学,3.文件的读写通过函数进行。文本文件的读写函数主要有fgetc和fputc,fgets和fputs,其调用形式如表10-2所示。表10-2中的EOF是文件结束标志,定义在文件stdio.

4、h中,其值为-1,可用来判断文本文件是否结束。,学一学,4.关闭文件 C语言使用fclose函数关闭文件。关闭文件就是使原来指向该文件的文件指针与文件脱离,fclose的调用形式为:fclose(fp);关闭文件指针fp所指的文件。若文件关闭成功,返回值为NULL,否则,返回一个非0值,表示关闭文件时出错。,试一试,问题10.1编一程序从键盘输入一串字符“may friendship forever!”,然后保存在文件myInfo.txt中。,调试问题10.1程序,观察运行结果,想一想,问题10.1用fputs函数实现应如何修改程序?请根据提示写出完整程序。提示:(1)删除语句int i;(2

5、)可将语句 i=0;while(chInfoi!=0)fputc(chInfoi,fp);i+;改为:fputs(chInfo,fp);,试一试,问题10.2:打开问题10.1生成的文件myInfo.txt,将其中的内容显示在屏幕上,要求文件名从命令行参数输入。【解题步骤】1定义文件指针fp;2定义字符变量用来存放从文件中读取的字符;3以读文本文件方式打开文件(文件名由命令行参数输入);4如果打开文件失败,则输出错误信息并结束程序;5读取文件中的内容并显示在屏幕上;6关闭文件。,想一想,问题10.2用fgets函数实现应如何修改程序?请根据提示写出完整程序。提示:(1)语句char ch;改为

6、char*chInfo;(2)语句ch=fgetc(fp);while(ch!=EOF)putchar(ch);ch=fgetc(fp);改为:fgets(chInfo,100,fp);printf(%s,chInfo);注意,fgets函数中的第2个参数为要读取的字符数,要大于或等于文件的长度+1。,练一练,问题:编一程序实现文件的拷贝,将文件myInfo.txt拷贝到文件myBak.txt。要求源文件名和目标文件名都在程序运行时通过键盘输入,可将其存放在两个字符数组中,然后再在打开文件时使用。,问题与讨论,什么是缓冲文件系统,有什么优点?二进制文件和文本文件各有什么优缺点?,学生容易错的地

7、方,文件操作完毕后不关闭文件;文件打开时没有赋给一个文件指针。,小结:,1文件的存储形式。数据在内存中以二进制形式存放,当把内存中的数据输出到磁盘文件中时可以用两种形式存储,即字符形式或二进制形式。2.在C语言中,系统定义了一个文件类型FILE,用来实现缓冲文件系统方式下文件的读写操作,文件指针就是一个FILE类型的指针变量,由此实现文件的具体读写。3其它读写函数。C语言提供了多种以缓冲文件系统方式读写文本文件的函数,在ANSI C中,还有格式化读写函数fprintf和fscanf可用来读写文本文件。,二进制文件的读写,应知:-二进制文件读写的步骤-二进制文件读写函数的功能及函数参数的含义应会

8、:-二进制文件的打开、读写、关闭-对数据块进行操作 难点:-对数据块进行读写,英文词汇,File 文件Binary 二进制,提 问,什么是缓冲文件系统,有什么优点?二进制文件和文本文件各有什么优缺点?,知识回顾:文本文件,简单叙述文件操作四步骤定义文件指针.打开文件.读写文件.关闭文件.,学一学:二进制文件的读写,对于二进制文件,以缓冲文件系统方式读写文件的步骤同样为以下四个步骤:定义文件指针;打开文件;读写文件;关闭文件。其中定义文件指针、打开文件和关闭文件的操作在上一节中已介绍过,这里主要学习用来读写二进制文件的两个函数fread和fwrite。,学一学,块写入函数fwrite的调用形式为

9、:fwrite(buffer,size,n,fp)将buffer开始处的n个大小为size字节的数据块(记录)写入到文件指针fp所指向的文件中。成功返回数据块(记录)个数n,不成功返回0。块读取函数fread的调用形式为:fread(buffer,size,n,fp)从文件指针fp所指向的文件中读取n个大小为size 个字节的数据块(记录)到buffer所指向的地址空间。成功返回数据块(记录)个数n,出错或遇文件结束返回0。,试一试,问题10.3 编一程序从键盘输入5个整数并写入到文件test.dat中。,调试问题10.3程序,观察运行结果,想一想,将问题10.3中的5个整数改为5个实数写入文

10、件testFloat.dat中应如何修改程序?,试一试,问题10.4 编一程序从问题10.3写入的文件test.dat中读取数据并显示在屏幕上。【解题步骤】1定义整型数组iArray用来存放5个整数;2定义整型变量i作为循环变量;3定义文件指针fp;4以读二进制文件方式打开文件test.dat;5如果打开文件失败,则输出错误信息并结束程序;6从文件中读取5个整数并存放在数组iArray中;7显示数组iArray中的元素;8关闭文件。,想一想,文件testFloat.dat中存有5个实数,请读取并显示出来,应如何实现?,试一试,问题10.5 编一程序从键盘输入5个学生的成绩记录并写入到文件std

11、Score.dat中。5个学生的成绩记录见表10-3。,调试问题10.5 程序,观察运行结果,想一想,问题10.5的写文件操作是每次写入一个学生的信息,循环5次,如果不使用循环语句而一次性地将5个学生数据写入文件,应该怎样实现?,试一试,问题10.6 编一程序将问题10.5所写的文件stdScore.dat中的数据显示在屏幕上。【解题步骤】1定义学生成绩结构体类型type_score;2定义结构体类型type_scor数组stScore5 用来存放从文件中读取的信息;3定义文件指针fp;4定义整型变量i作为循环变量;5以读二进制文件方式打开文件stdScore.dat;6如果打开文件失败,则输

12、出错误信息并结束程序;7逐条读取文件中的记录存放在结构体数组stScore中8关闭文件;9显示结构体数组stScore中的数据。,想一想,问题10.6的读取文件操作是每次读出一个学生的信息,循环5次,如果不使用循环语句而一次性地读出5个学生的数据,程序怎样更改?,练一练,问题:编一程序从文件stdScore.dat(问题10.5已写入数据)中将姓名、学号和数学成绩3个字段的数据保存在文件stdMath.dat中。,问题与讨论,为什么使用数据块读写函数?EOF是否可以用来检测二进制文件的结束?怎样检测二进制文件的结束?,学生容易错的地方,对不存在的文件进行读操作;操作方式不熟悉。,小结,1使用f

13、read和fwrite函数可以方便地读写任意类型的数据,比如int型、float型、char型等基本类型以及结构体类型的数据。2使用fwrite函数写入数据的文件是二进制文件。,文件的定位与随机读写,应知:-以缓冲文件系统方式随机读写文件的步骤-指定文件位置值的含义应会:-文件读写指针位置的重置-文件读写指针位置的随机定位 难点:-文件读写指针位置的随机定位,英文词汇,Rewind 重置Seek 定位,提 问,fputc()函数与fputs()函数的区别是什么?fgetc()函数与fgets()函数的区别是什么?,学一学:文件的定位与随机读写,文件中有一个位置指针,指向当前读写的位置。当顺序读

14、写一个文件时,每读写完一个一个数据单位(一个字符,或一个整数,或一个结构体变量)后,位置指针自动移向下一个数据单位位置,如果想改变这种顺序,就需要强制使位置指针指向指定的位置。以缓冲文件系统方式随机读写文件的步骤为定义文件指针;打开文件;文件的定位;读写文件;关闭文件。文件的定位可以通过重置位置指针函数rewind和随机定位函数fseek来实现。,学一学,1重置位置指针函数rewind的调用形式:rewind(fp);使文件的读写位置指针重新移到文件的开头。其中fp指 向正在读写的文件。该函数没有返回值。2随机定位函数fseek的调用形式:fseek(fp,lOffset,iOrigin)将文

15、件指针fp所指文件的位置指针移到指定的位置,该位置与iOrigin所代表的文件位置相距lOffset个字节。iOrigin可以是三个给定文件位置中的一个,用三个符号常量(在stdio.h中定义)或0,1,2来表示,具体含义见表10-4。,学一学,试一试,问题10.7 编程将1,2,3,10十个整数写入文件testRand.dat,然后再从文件中读取1,3,5,7,9五个数字并显示。,调试问题10.7 程序,观察运行结果,想一想,对于问题10.7,如果要读取文件testRand.dat中的2,4,6,8,10并显示,应该如何修改程序?提示:整数2所在的位置是第2、3字节处,整数4所在的位置是第6

16、、7字节处,整数6所在的位置是10、11字节处,整数8所在的位置是14、15字节处,整数10所在的位置是第18、19字节处。,再试一试,问题10.8 编一程序从问题10.5写入的文件stdScore.dat中读取一条记录并显示在屏幕上,要求从键盘输入记录的序号。,调试问题10.8 程序,观察运行结果,想一想,对问题10.7中找到的记录进行修改,修改完以后再写入原来的文件中,应如何修改程序?请根据提示写出完整程序。提示:(1)在变量说明部分增加一个字符变量chYesNo的申明,用来存放用户对是否进行修改的确认。(2)打开文件的方式改为可读写,即rb+。(3)在关闭文件之前,即在语句fclose(

17、filePonter)之前按下面步骤添加程序。从键盘让用户确认是否进行修改,输入字符y 或 n存放在变量chYesNo中;若chYesNo=y,则表示要修改记录,需要完成下面操作。从键盘输入一条学生记录数据并存放在结构体变量stTemp中;定位文件指针到第iRecordID条记录的开始处;将结构体变量stTemp中写入文件;若chYesNo=n,则不对记录进行修改。,练一练,问题:编一程序在文件stdScore.dat(问题10.5已写入数据)的末尾添加一条新记录,然后将文件中所有记录显示出来。这条新记录为学生Lisa的成绩,具体如下:NameNumberMathEnglish ChineseLisa 1006 8993 75,问题与讨论,怎样实现随机文件读写?,学生容易错的地方,打开文件进行写之后,没有将文件位置指针指回文件 文件定位fseek函数的使用,小结,1在实际应用中,若对某一文件进行多次读写操作后,需要重新读写该文件,使用rewind函数可以在不关闭文件的情况下将位置指针返回文件开头,达到重新读取文件的目的。2使用定位当前位置指针函数ftell可获取当前文件指针的位置。注意,该函数限于二进制文件,对文本文件往往会出错。3.使用函数feof可对文本文件和二进制文件进行文件是否结束的判断。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号