最新十三章精品课件.ppt

上传人:豆**** 文档编号:24227953 上传时间:2022-07-04 格式:PPT 页数:44 大小:734.50KB
返回 下载 相关 举报
最新十三章精品课件.ppt_第1页
第1页 / 共44页
最新十三章精品课件.ppt_第2页
第2页 / 共44页
点击查看更多>>
资源描述

《最新十三章精品课件.ppt》由会员分享,可在线阅读,更多相关《最新十三章精品课件.ppt(44页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、进入夏天,少不了一个热字当头,电扇空调陆续登场,每逢此时,总会进入夏天,少不了一个热字当头,电扇空调陆续登场,每逢此时,总会想起那一把蒲扇。蒲扇,是记忆中的农村,夏季经常用的一件物品。记想起那一把蒲扇。蒲扇,是记忆中的农村,夏季经常用的一件物品。记忆中的故乡,每逢进入夏天,集市上最常见的便是蒲扇、凉席,不论男女老忆中的故乡,每逢进入夏天,集市上最常见的便是蒲扇、凉席,不论男女老少,个个手持一把,忽闪忽闪个不停,嘴里叨叨着少,个个手持一把,忽闪忽闪个不停,嘴里叨叨着“怎么这么热怎么这么热”,于是三,于是三五成群,聚在大树下,或站着,或随即坐在石头上,手持那把扇子,边唠嗑五成群,聚在大树下,或站着

2、,或随即坐在石头上,手持那把扇子,边唠嗑边乘凉。孩子们却在周围跑跑跳跳,热得满头大汗,不时听到边乘凉。孩子们却在周围跑跑跳跳,热得满头大汗,不时听到“强子,别跑强子,别跑了,快来我给你扇扇了,快来我给你扇扇”。孩子们才不听这一套,跑个没完,直到累气喘吁吁,。孩子们才不听这一套,跑个没完,直到累气喘吁吁,这才一跑一踮地围过了,这时母亲总是,好似生气的样子,边扇边训,这才一跑一踮地围过了,这时母亲总是,好似生气的样子,边扇边训,“你你看热的,跑什么?看热的,跑什么?”此时这把蒲扇,是那么凉快,那么的温馨幸福,有母亲此时这把蒲扇,是那么凉快,那么的温馨幸福,有母亲的味道!蒲扇是中国传统工艺品,在我国

3、已有三千年多年的历史。取材的味道!蒲扇是中国传统工艺品,在我国已有三千年多年的历史。取材于棕榈树,制作简单,方便携带,且蒲扇的表面光滑,因而,古人常会在上于棕榈树,制作简单,方便携带,且蒲扇的表面光滑,因而,古人常会在上面作画。古有棕扇、葵扇、蒲扇、蕉扇诸名,实即今日的蒲扇,江浙称之为面作画。古有棕扇、葵扇、蒲扇、蕉扇诸名,实即今日的蒲扇,江浙称之为芭蕉扇。六七十年代,人们最常用的就是这种,似圆非圆,轻巧又便宜的蒲芭蕉扇。六七十年代,人们最常用的就是这种,似圆非圆,轻巧又便宜的蒲扇。蒲扇流传至今,我的记忆中,它跨越了半个世纪,也走过了我们的扇。蒲扇流传至今,我的记忆中,它跨越了半个世纪,也走过

4、了我们的半个人生的轨迹,携带着特有的念想,一年年,一天天,流向长长的时间隧半个人生的轨迹,携带着特有的念想,一年年,一天天,流向长长的时间隧道,袅道,袅l 本章要点本章要点n 文件简单应用文件简单应用13.1 C文件概述说明:在UNIX系统下,用缓冲文件系统来处理文本文件,用非缓冲文件系统来处理二进制文件.ANSI C 标准只采用缓冲文件系统来处理文本文件和二进制文件.C语言中对文件的读写都是用库函数来实现.13.2 文件类型指针Turbo 在stdio.h文件中有以下的文件类型声明:typedef struct shortlevel; * *缓冲区缓冲区“满满”或或“空空”的程度的程度* *

5、 unsignedflags; * *文件状态标志文件状态标志* * charfd; * *文件描述符文件描述符* * unsignedcharhold; * *如无缓冲区不读取字符如无缓冲区不读取字符* * shortbsize; * *缓冲区的大小缓冲区的大小* * unsignedchar*buffer;/;/* *数据缓冲区的位置数据缓冲区的位置* */ / unsignedar*curp;/ /* *指针,当前的指向指针,当前的指向* */ / unsignedistemp;/ /* *临时文件,指示器临时文件,指示器* */ / shorttoken;/ /* *用于有效性检查用于

6、有效性检查* */ /FILE; 在缓冲文件系统中,每个被使用的文件都要在内存中开辟一FILE类型的区,存放文件的有关信息.13.2 文件类型指针FILE类型的数组:FILEFILEf f5 5; ;定义了一个结构体数组f,它有5个元素,可以用来存放5个文件的信息。文件型指针变量:FILE FILE * *fpfp;fp是一个指向FILE类型结构体的指针变量。可以使fp指向某一个文件的结构体变量,从而通过该结构体变量中的文件信息能够访问该文件。如果有个文件,一般应设个指针变量,使它们分别指向个文件,以实现对文件的访问。13.3 文件的打开与关闭一.文件的打开(fopen函数)函数调用:FILE

7、 *fp;fpfopen(文件名,使用文件方式);需要打开的文件名,也就是准备访问的文件的名字;使用文件的方式(“读”还是“写”等);让哪一个指针变量指向被打开的文件。 13.3 文件的打开与关闭文件使用方式含文件使用方式含 义义 “r” (r” (只读只读) )为为输入输入打开一个打开一个文本文本文件文件“w” (w” (只写只写) )为为输出输出打开一个打开一个文本文本文件文件“a” (a” (追加追加) )向向文本文本文件尾增加数据文件尾增加数据“rb” (rb” (只读只读) )为为输入输入打开一个打开一个二进制二进制文件文件“wb” (wb” (只写只写) )为为输出输出打开一个打开

8、一个二进制二进制文件文件ab“ (ab“ (追加追加) )向向二进制二进制文件尾增加数据文件尾增加数据r+“ (r+“ (读写读写) )为为读读/ /写写打开一个打开一个文本文本文件文件w+” (w+” (读写读写) )为为读读/ /写建立写建立一个新的一个新的文本文本文件文件a+” (a+” (读写读写) )为读为读/ /写打开一个文本文件写打开一个文本文件rb+“ (rb+“ (读写读写) )为读为读/ /写打开一个写打开一个二进制二进制文件文件“wb+“ (wb+“ (读写读写) )为读为读/ /写写建立建立一个新的一个新的二进制二进制文件文件“ab+” (ab+” (读写读写) )为读

9、为读/ /写打开一个写打开一个二进制二进制文件文件13.3 文件的打开与关闭二.文件的关闭(fclose函数)函数调用:fclose(文件指针);函数功能: 使文件指针变量不指向该文件,也就是文件指针变量与文件“脱钩”,此后不能再通过该指针对原来与其相联系的文件进行读写操作 返回值:关闭成功返回值为;否则返回EOF(-1) 13.4 文件的读写一.字符输入输出函数(fputs()和fgets()fputs函数函数调用:fputs ( ch,fp ) ; 函数功能: 将字符(ch的值)输出到fp所指向的文件中去。 返回值:如果输出成功,则返回值就是输出的字符;如果输出失败,则返回一个EOF.13

10、.4 文件的读写fgets函数函数调用:chfgets(fp);函数功能: 从指定的文件读入一个字符,该文件必须是以读或读写方式打开的。 返回值:读取成功一个字符,赋给。如果遇到文件结束符,返回一个文件结束标志EOF 。13.4 文件的读写常见的读取字符操作从一个文本文件顺序读入字符并在屏幕上显示出来: ch = fgetc(fp); while(ch!=EOF) putchar(ch); ch = fgetc(fp); 注意:EOF不是可输出字符,因此不能在屏幕上显示。由于字符的ASCII码不可能出现,因此EOF定义为是合适的。当读入的字符值等于时,表示读入的已不是正常的字符而是文件结束符。

11、 13.4 文件的读写常见的读取字符操作从一个二进制文件顺序读入字符: while(!feof(fp) ch = fgetc(fp); 注意:ANSI C提供一个feof()函数来判断文件是否真的结束。如果是文件结束,函数feof(fp)的值为(真);否则为(假)。以上也适用于文本文件的读取。 13.4 文件的读写(续)fputc和fgetc函数使用举例:例例3 3从键盘输入一些字符,逐个把它们送到从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个磁盘上去,直到输入一个“”为止。为止。 #include #include void main(void) FILE *fp; char ch

12、,filename10; scanf(%s,filename); if(fp=fopen(filename,w)=NULL) printf(cannot open filen); exit(0); /*终止程序*/ ch=getchar( ); /*接收执行scanf语句时最后输入的回车符 */ ch=getchar( ); /* 接收输入的第一个字符 */ while(ch!=# fputc(ch,fp);putchar(ch); ch=getchar(); fclose(fp); 运行情况如下: (输入磁盘文件名) (输入一个字符串) (输出一个字符串) 13.4 文件的读写(续)fput

13、c和fgetc函数使用举例:例例3 3将一个磁盘文件中的信息复制到另一个磁将一个磁盘文件中的信息复制到另一个磁盘文件中盘文件中 。 #include #include main( )FILE *in,*out; char ch,infile10,outfile10; printf(Enter the infile name:n); scanf(%s,infile); printf(Enter the outfile name:n); scanf(%s,outfile); if(in=fopen(infile,r)=NULL) printf(cannot open infilen); exit(

14、0); if(out=fopen(outfile,w)=NULL) printf(cannot open outfilen); exit(0); while(!feof(in)fputc(fgetc(in),out); fclose(in); fclose(out);运行情况如下: (输入原有磁盘文件名 n:(输入新复制的磁盘文件名)程序运行结果是将文件中的内容复制到中去。 13.4 文件的读写(续)fputc和fgetc函数使用举例:例例3 3的改进:复制一个二进制文件,利用的改进:复制一个二进制文件,利用mainmain参数,在输入命令行是将两个文件名输入。参数,在输入命令行是将两个文件名

15、输入。 #include #include main(int argc,char *argv )FILE *in,*out; char ch; if (argc!=3) printf(You forgot to enter a filenamen);exit(0); if(in=fopen(argv1,rb)=NULL)printf(cannot open infilen); exit(0); if(out=fopen(argv2,wb)=NULL) printf(cannot open outfilen); exit(0); while(!feof(in) fputc(fgetc(in),o

16、ut); fclose(in); fclose(out);运行方法:设经编译连接后得到的可执行文件名为a.exe,则在DOS命令工作方式下,可以输入以下的命令行:a 和,分别输入到和中,的内容为a,的值等于 。13.4 文件的读写二.数据块读写函数(fread()和fwrite()函数调用:fread (buffer,size,count,fp);fwrite(buffer,size,count,fp); 参数说明:buffer:是一个指针。对fread 来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址(均指起始地址)。size: 要读写的字节数。count: 要进行读写多

17、少个size字节的数据项。fp: 文件型指针。13.4 文件的读写 使用举例: 若文件以二进制形式打开: fread(f,4,2,fp); 此函数从fp所指向的文件中读入2个4个字节的数 据,存储到数组f中。13.4 文件的读写使用举例:若有如下结构类型:struct student_typechar name10; int num; int age; char addr30;stud40;可以用fread和fwrite来进行数据的操作:for(;) fread(&studi,sizeof(struct student-type),1,fp); for(;,)fwrite(&studi,siz

18、eof(struct student-type),1,fp); 13.4 文件的读写使用举例:例3从键盘输入个学生的有关数据,然后把它们转存到磁盘文件上去。 #include #define SIZE 4struct student_typechar name10; int num; int age; char addr15;studSIZE; /*定义结构*/13.4 文件的读写(续) void save( )FILE *fp; int i; if(fp=fopen(stu-list,wb)=NULL) printf(cannot open filen); return; for(i=0;i

19、SIZE;i+)/*二进制写*/ if(fwrite(&studi,sizeof(struct student_type),1,fp)!=1) printf(“file write errorn”);/*出错处理*/ fclose(fp); /*关闭文件*/ main()int i; for(i=0;iSIZE;i+)/*从键盘读入学生信息*/scanf(%s%d%d%s,studi.name,&studi.num, &studi.age,studi.addr);save( );/*调用save()保存学生信息*/运行情况如下:输入个学生的姓名、学号、年龄和地址: Z- F - T - L -

20、 验证在磁盘文件“-”中是否已存在此数据,用以下程序从“-”文件中读入数据,然后在屏幕上输出。 13.4 文件的读写(续) #include #define SIZE 4 struct student_typechar name10; int num; int age; char addr15;studSIZE; main( )int i;FILE*fp;fp=fopen(stu-list,rb);for(i=0;iSIZE;i+) fread(&studi,sizeof(struct student_type),1,fp); printf(%-10s %4d %4d %-15sn,studi

21、.name, studi.num,studi. age,studi.addr); fclose (fp);屏幕上显示出以下信息:Z -F -T -L - 如果已有的数据已经以二进制形式存储在一个磁盘文件“-”中,要求从其中读入数据并输出到“-”文件中,可以编写一个函数,从磁盘文件中读二进制数据。 13.4 文件的读写 void load( ) FILE *fp;int i; if(fp=fopen(stu-dat,rb)=NULL) printf(cannot open infilen); return; for(i=0;iSIZE;i+) if(fread(&studi,sizeof(str

22、uct student_type),1,fp)!=1) if(feof(fp) fclose(fp); return; printf(file read errorn); fclose (fp); 13.4 文件的读写三.格式化读写函数(fprintf()和fscanf()函数调用:fprintf ( 文件指针,格式字符串,输出表列);fscanf ( 文件指针,格式字符串,输入表列); 函数功能: 从磁盘文件中读入或输出字符。 例:fprintf(fp,”%d,%6.2f”,i,t);Fscanf (fp,”%d,%f”,&i,&t);注意:用fprintf和fscanf函数对磁盘文件读写,

23、使用方便,容易理解,但由于在输入时要将ASCII码转换为二进制形式,在输出时又要将二进制形式转换成字符,花费时间比较多。因此,在内存与磁盘频繁交换数据的情况下,最好不用fprintf和fscanf函数,而用fread和fwrite函数。13.4 文件的读写三.其他读写函数putw()和getw()函数调用:putw(int i,FILE * fp);int i = getw(FILE * fp); 函数功能: 对磁盘文件中读写一个字(整数)。 例:putw(10,fp);i = getw(fp);putw函数定义如下:putw(int I,FILE *fp) char s; s=&I; put

24、c(s0,fp); putc(s1,fp); return i; gutwgutw函数定义如下:函数定义如下:gutw(FILE *fp) char s; s=char *&i; s0 = getc(fp); s1 = getc(fp); return i; 13.4 文件的读写用户自定义读取其他类型数据的函数向磁盘文件写一个实数(用二进制方式)的函数putfloat :putfloat(float num,FILE *fp)char s;int count;s = (char*)#for(count = 0;count 4;count+)putc(scount,fp); 13.4 文

25、件的读写fgets函数函数作用:从指定文件读入一个字符串。函数调用:fgets(str,n,fp);从fp指向的文件输入n-1个字符,在最后加一个0返回值:str的首地址13.4 文件的读写fputs函数函数作用:向指定的文件输出一个字符串。函数调用:fgets(“china”,fp);第一个参数可以是字符串常量、字符数组名或字符型指针。字符串末尾的不输出。 返回值:输入成功,返回值为0;输入失败,返回EOF.13.5 文件的定位rewind函数函数作用:使位置指针重新返回文件的开头,无返回值。应用举例应用举例:例例3 3有一个磁盘文件,第一次将它的内容显示在屏幕上,第二次把它复制到另一文件上

26、。 #include main()FILE *fp1,*fp2; fp1=fopen(file1.c,r);fp2=fopen(file2.c,w); while(!feof(fp1) putchar(getc(fp1); rewind(fp1);while(!feof(fp1) putc(getc(fp1),fp2); fclose(fp1);fclose(fp2); 13.5 文件的定位顺序读写和随机读写顺序读写:顺序读写:位置指针按字节位置顺序移动。随机读写随机读写:读写完上一个字符(字节)后,并不一定要读写其后续的字符(字节),而可以读些文件中任意位置上所需要的字符(字节)。 13.5

27、 文件的定位fseek函数(一般用于二进制文件)函数功能:函数功能:改变文件的位置指针函数调用形式函数调用形式:fseek(文件类型指针,位移量,起始点)起始点:文件开头 SEEK_SET 0 文件当前位置 SEEK_CUR 1 文件末尾 SEEK_END 2位移量:以起始点为基点,向前移动的字节数。一般 要求为long型 13.5 文件的定位fseek函数应用举例fseek(fpfseek(fp,100L100L,);,);将位置指针移到离文件头将位置指针移到离文件头100100个字节处个字节处fseek(fpfseek(fp,50L50L, ););将位置指针移到离当前位置将位置指针移到离

28、当前位置5050个字节处个字节处fseek(fpfseek(fp,50L50L, ););将位置指针从文件末尾处向后退个字节将位置指针从文件末尾处向后退个字节 13.5 文件的定位例例3 3在磁盘文件上存有个学生的数据。要求在磁盘文件上存有个学生的数据。要求将第、个学生数据输入计算机,并将第、个学生数据输入计算机,并在屏幕上显示出来。在屏幕上显示出来。 #include #include #include#include struct student_type struct student_type char name10; char name10; int num; int num; int

29、 age; int age; char sex; char sex; stud10; stud10; main()main() int i; int i; FILE FILE * *fp;fp; if(fp=fopen(stud-dat,rb)=NULL) if(fp=fopen(stud-dat,rb)=NULL) printf(can not open filen); printf(can not open filen); exit(0); exit(0); for(i=0;i10;i+=2) for(i=0;i10;i+=2) fseek(fp,ifseek(fp,i* *sizeof(

30、struct student_type),0);sizeof(struct student_type),0); fread(&studi, sizeof(struct student_type),1,fp); fread(&studi, sizeof(struct student_type),1,fp);printf(“%s %d %d %cn”,studi.name,printf(“%s %d %d %cn”,studi.name, studi.num,studi.age,studi.sex); studi.num,studi.age,studi.sex); fclose(fp) fclos

31、e(fp)13.5 文件的定位ftell函数函数作用:得到流式文件中的当前位置,用相对于文件开头的位移量来表示。返回值:返回当前位置,出错时返回-1L。应用举例:i = ftell(fp);if(i=-1L) printf(“errorn”); 13.6 出错的检测ferror函数调用形式:ferror(fp);返回值:返回0,表示未出错;返回非0,表示出错。在调用一个输入输出函数后立即检查ferror函数的值,否则信息会丢失。在执行fopen函数时,ferror函数的初始值自动置为。 13.6 出错的检测clearerr函数调用形式:clearerr(fp);函数作用:使文件错误标志和文件结

32、束标志置为0。只要出现错误标志,就一直保留,直到对同一文件调用clearerr函数或rewind函数,或任何其他一个输入输出函数。 13.7 文件输入输出小结分类分类 函数名函数名 功能功能 打开文件打开文件 fopen() 打开文件打开文件 关闭文件关闭文件 fclose() 关闭文件关闭文件文件定位文件定位 fseek() 改变文件位置指针的位置改变文件位置指针的位置 Rewind() 使文件位置指针重新至于文件开头使文件位置指针重新至于文件开头 Ftell() 返回文件位置指针的当前值返回文件位置指针的当前值文件状态文件状态 feof() 若到文件末尾,函数值为真若到文件末尾,函数值为真

33、 Ferror() 若对文件操作出错,函数值为真若对文件操作出错,函数值为真 Clearerr() 使使ferror和和feof()函数值置零函数值置零13.7 文件输入输出小结分类分类 函数名函数名 功能功能 文件读写文件读写 fgetc(),getc()从指定文件取得一个字符从指定文件取得一个字符 fputc(),putc()把字符输出到指定文件把字符输出到指定文件 fgets()从指定文件读取字符串从指定文件读取字符串 fputs()把字符串输出到指定文件把字符串输出到指定文件 getw()从指定文件读取一个字(从指定文件读取一个字(int型)型) putw()把一个字输出到指定文件把一个字输出到指定文件 fread()从指定文件中读取数据项从指定文件中读取数据项 fwrite()把数据项写到指定文件中把数据项写到指定文件中 fscanf()从指定文件按格式输入数据从指定文件按格式输入数据 fprintf()按指定格式将数据写到指定文件中按指定格式将数据写到指定文件中44 结束语结束语

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com