ImageVerifierCode 换一换
格式:PPTX , 页数:49 ,大小:892.73KB ,
文档编号:5170802      下载积分:25 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-5170802.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(晟晟文业)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(C语言程序设计案例教程课件-第十一章-文件.pptx)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

C语言程序设计案例教程课件-第十一章-文件.pptx

1、第11章 文件学习内容学习内容 11.1 磁盘文件信息复制 11.2 文件类型指针 11.3 文件的基本操作 11.4 文件的定位函数 11.5 文件出错检测函数 11.6 小 型 案 例 11.7 小 结11.1 磁盘文件信息复制问题 在我们使用电脑时,时常要将一个磁盘文件中的信息复制到另一个磁盘文件中,使其达到对文件信息备份及另存的目的。为此我们可以编写一个程序来执行其操作。解决这个问题我们要明确操作文件的“三步曲”:第一步,对文件操作之前要将其打开;第二步,处理其数据;第三步,数据处理完后将文件关闭。针对当前任务的第一步就是明确原文件及目标文件并将两者打开,再将原文件信息读出,把读出的信

2、息写入目标文件中,然后关闭原文件与目标文件。通过这几步,我们已明确了该问题的设计思路。分析设计 围绕文件操作的“三步曲”,我们可以用printf()函数进行文件名的输入提示,用scanf()函数将文件名输入。使用fopen()函数打开两个文件时判断这两个文件是否能正常打开,如不能打开则输出提示。用fgetc()函数读出原文件信息。用feof()函数判断原文件信息是否读完。用fputc()函数把读出的信息写入目标文件中。最后用fclose()关闭原文件与目标文件。实现#includestdio.hmain()FILE *infp,*outfp;char ch,infile10,outfile10

3、;printf(Enter the infile name:n);scanf(%s,infile);printf(Enter the outfile name:n);scanf(%s,outfile);if(infp=fopen(infile,r)=NULL)printf(cannot open infilen);exit(0);if(outfp=fopen(outfile,w)=NULL)printf(cannot open outfilen);exit(0);while(!feof(infp)fputc(fgetc(infp),outfp);fclose(infp);fclose(outf

4、p);其程序运行情况如下:Enter the infile name:wj1.c(输入原有磁盘文件名)Enter the outfile name:wj2.c(输入新复制的磁盘文件名)相关概述 C语言在使用文件时,系统会在内存中为每一个文件开辟一个区域,用来存放文件的有关信息(如文件的名字、文件状态以及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是由系统定义的,取名为FILE。Turbo CTurbo C在在stdio.hstdio.h文件中有以下的文件类型声明:文件中有以下的文件类型声明:typedefstructshort level;/*缓冲区“满”或“空”的程度

5、*/unsigned flags;/*文件状态标志*/char fd;/*文件描述符*/unsigned char hold;/*如无缓冲区不读取字符*/short bsize;/*缓冲区的大小*/unsigned char *buffer;/*数据缓冲区的位置*/unsigned char *curp;/*指针,当前的指向*/unsigned istemp;/*临时文件,指示器*/short token;/*用于有效性检查*/FILE;有了结构体FILE类型之后,可以用它来定义若干个FILE类型的变量,以便存放若干个文件的信息。例如,可以定义以下FILE类型的数组。FILEf3;定义了一个结

6、构体数组f,它有3个元素,可以用来存放3个文件的信息。可以定义文件型指针变量。如:FILE*fp1,*fp2;文件的打开 C语言在头文件stdio.h中提供了标准输入输出函数库,用fopen()函数来实现打开文件。fopen()函数的调用方式通常为 FILE*fp;fp=fopen(“文件名”,“文件操作方式”);注意对于文件名的使用,应注意以下几个方面:使用文件名时,必须对其用双引号括起来,如果使用的是字符数组(或字符指针),则不使用双引号。如果在当前目录下使用一个文件,则可以不加路径。如果使用的文件不在当前目录下,则有两种情况:(1)如果不在当前目录的子目录下使用某一个文件,则必须加上相对

7、路径。例如,在当前目录下有一个子目录test,如果要以追加方式使用test目录下的一个文件file0.txt,可以这样使用:fp=fopen(testfile0.txt,a);注意,test后面必须用“”,不能用“”。(2)如果使用的文件在另外一个目录下,此时必须使用绝对路径,例如,在C盘下有一个目录doc,如果要以只读方式使用此目录下的文件file1.txt,可以这样使用:fp=fopen(c:docfile1.txt,r);或fp=fopen(c:/doc/file1.txt,r);文件的操作方式文件的关闭 所谓关闭文件,是指把(输出)缓冲区的数据输入到磁盘文件中,同时释放文件指针变量(即

8、使文件指针变量不再指向该文件)。此后,不能再通过该指针变量来访问该文件,除非再次打开,使该指针变量重新指向该文件。int fclose(文件指针名)已打开的文件指针函数功能:关闭文件指针指定的文件,释放该文件的缓冲区、FILE类型变量及文件指针。若文件关闭成功,则返回0;若文件关闭失败,则返回非0值。文件的关闭文件的关闭关闭文件的作用有以下两点:1使文件指针fp与文件脱离。2刷新文件输入输出缓冲区。文件读函数 fgetc()函数的作用是从“文件指针变量”所指向的文件(该文件必须是以读或读写方式打开的)中,读出一个字符,同时将读写位置指针向前移动1个字节(即指向下一个字符)。fgetc()函数其

9、调用形式为:ch=fgetc(fp);文件型指针变量字符变量文件读函数注意:在对二进制文件执行读入操作时,必须使用函数feof()来判断是否遇到文件尾。feof()函数其调用形式为:feof(文件指针变量);如:feof(fp)指测试fp所指向的文件当前状态是否“文件结束”。如果是文件结束,函数feof(fp)的值为1(真),否则为0(假)。如果想顺序读入一个二进制文件中的数据,可以用while(!feof(fp)i=fgetc(fp);文件读函数 fread()函数其调用形式为:fread(buffer,size,count,fp);buffer:是一个指针,它是读入数据的存放地址。size

10、:要读的字节数。count:要进行读多少个size字节的数据项。fp:文件型指针。文件读函数 用fgetc()函数可以用来读写文件中的一个字符,但是常常要求一次读入一组数据(如,一个实数或一个结构体变量的值)。fread()函数 如果文件以二进制形式打开,用fread()函数就可以读写任何类型的信息。如:fread(bf,4,3,fp);其中bf是一个实型数组名。一个实型变量占4个字节。这个函数从fp所指向的文件读入3次(每次4个字节)数据,存储到数组bf中。文件读函数 fscanf()函数 fscanf()函数与scanf()函数作用相仿,都是格式化读函数。只有一点不同:fscanf()函数

11、的读出对象不是终端而是磁盘文件。一般调用方式为fscanf(文件指针,格式字符串,输入列表);例如:fscanf(fp,%d,%f,&a,&b);文件读函数 fgets()函数 fgets()函数的作用是从指定文件读出(向内存输入)一个字符串。它的调用方式为:fgets(接收输入的字符型指针,输入字符个数,文件指针名);如:fgets(str,m,fp);文件写函数 fputc()函数其调用形式为:fputc(ch,fp);文件型指针变量字符变量 其中ch是要写入文件的字符,它可以是一个字符常量,也可以是一个字符变量。fp是文件指针变量。fputc(ch,fp)函数的作用是将字符(ch的值)输

12、出到fp所指向的文件中去。fputc函数也带回一个值:如果输出成功,则返回值就是输出的字符;如果输出失败,则返回一个EOF(-1)。文件读函数 fwrite()函数其调用形式为:fwrite(buffer,size,count,fp);buffer是一个指针,是要输出数据的地址(以上指的是起始地址)size是要读写的字节数。count是要进行读写多少个size字节的数据项。fp是文件型指针。文件读函数 fwrite()函数 同fread()函数一样,当文件以二进制形式打开,用fwrite()函数就可以读写任何类型的信息,如:fwrite(bf,4,3,fp);假设bf是一个实型数组名。一个实型

13、变量占4个字节。那么这个fwrite()函数向fp所指向的文件写入3次(每次4个字节)数据,存储到数组bf中。文件读函数 fputc()函数 fprintf()函数与printf()函数作用相仿,都是格式化读写函数。只有一点不同:fprintf()函数的写入对象不是终端而是磁盘文件。它们的一般调用方式为 fprintf(文件指针,格式字符串,输出表列);例如:fprintf(fp,%d,%f,a,b);它的作用是把“输入列表”所列出的变量值如a,b按“格式字符串”里给出的格式说明(“%”开头)如%d,%f,写入到fp所指磁盘文件(已打开)中。在该函数得到正确执行后,返回从文件中写入的数值个数,

14、否则返回EOF(-1)。文件读函数 fprintf()函数 fprintf()函数与printf()函数作用相仿,都是格式化读写函数。只有一点不同:fprintf()函数的写入对象不是终端而是磁盘文件。它们的一般调用方式为 fprintf(文件指针,格式字符串,输出表列);例如:fprintf(fp,%d,%f,a,b);它的作用是把“输入列表”所列出的变量值如a,b按“格式字符串”里给出的格式说明(“%”开头)如%d,%f,写入到fp所指磁盘文件(已打开)中。在该函数得到正确执行后,返回从文件中写入的数值个数,否则返回EOF(-1)。文件读函数 fputs()函数 fputs()函数的作用是

15、向指定的文件写入(从内存输出)一个字符串。其调用方式为:fputs(要写入的字符串,文件名);如:fputs(Wuhan,fp);把字符串“Wuhan”写入到fp指向的文件。fputs()函数中第一个参数可以是字符串常量、字符数组名或字符型指针。字符串末尾的“0”不输出。若输出成功,函数值为0;失败时,为EOF。文件中有一个读写位置指针,指向当前的读写位置。每次读写1个(或1组)数据后,系统自动将位置指针移动指向下一个读写位置上。如果想改变这样的规律,强制使位置指针指向其他指定的位置,可以用有关函数。相关概述rewind()函数 rewind函数的作用是使位置指针重新返回文件的开头。此函数没有

16、返回值。实例分析例11-10 有一个磁盘文件,第一次将它的内容显示在屏幕上,第二次把它复制到另一文件中。#includestdio.hmain()FILE *fp1,*fp2;if(fp1=fopen(student0.txt,r)=NULL)printf(cannot open filen);exit(0);if(fp2=fopen(student1.txt,w)=NULL)printf(cannot open filen);exit(0);while(!feof(fp1)putchar(getc(fp1);rewind(fp1);while(!feof(fp1)putc(getc(fp1)

17、,fp2);fclose(fp1);fclose(fp2);printf(n);fseek()函数 对流式文件可以进行顺序读写,也可以进行随机读写。关键在于控制文件的位置指针,如果位置指针是按字节位置顺序移动的,就是顺序读写。如果能将位置指针按需要移动到任意位置,就可以实现随机读写。所谓随机读写,是指读写完上一个字符(字节)后,并不一定要读写其后续的字符(字节),而可以读写文件中任意所需的字符(字节)。fseek()函数 用fseek函数可以实现改变文件的位置指针。fseek函数的调用形式为:fseek(文件类型指针,位移量,起始点)如:fseek(fp,100L,0);功能:把位置指针移动到

18、距离文件头100字节处。实例分析例11-11 在磁盘文件上存有8个学生的数据。要求将第2、4、6、8个学生的数据输入计算机,并在屏幕上显示出来。#includestdio.hstruct student_data char name8;int number;int age;char sex;stu8;main()int i;FILE*fp;if(fp=fopen(student.txt,rb)=NULL)printf(can not open filen);exit(0);for(i=1;i8;+=2)fseek(fp,i*sizeof(struct student_data),0);frea

19、d(&stui,sizeof(struct student_data),1,fp);printf(%s%d%d%cn,stui.name,stui.number,stui.age,stui.sex);fclose(fp);ferror()函数 在调用各种输入输出函数(如putc、getc、fread、fwrite等)时,如果出现错误,除了函数返回值有所反映外,还可以用ferror函数检查。它的一般调用形式为 ferror(fp);其中参数文件指针fp为被测试文件,ferror()函数用来对该文件所做的最近一次操作进行正确性测试。如果ferror返回值为0(假),表示未出错。如果返回一个非0值,

20、表示出错。在执行fopen函数时,ferror函数的初始值自动置为0。实例分析例11-12 编写一个程序,接收从键盘输入的一个字符串、一个实数、一个整数,随即将其存入“d:/turboc2/liu.data”文件中。程序中文件操作需错误码测试。#include stdio.hvoid errp(FILE*fp)if(ferror(fp)!=0)printf(file operate be defeated!n);exit(0);else return;main()FILE*fp;char str8;float x;int i;fp=fopen(d:/turboc2/liu.data,w);er

21、rp(fp);/*调用函数errp(),进行错误测试。*/printf(Please enter a string,float,integer:n);fscanf(stdin,%s%f%d,str,&x,&i);/*从标准输入文件stdin(键盘)输入3个数据。*/errp(fp);/*调用函数errp(),进行错误测试。*/fprintf(fp,%s%f%d,str,x,i);errp(fp);/*调用函数errp(),进行错误测试。*/fclose(fp;clearerr()函数 它的作用是使文件错误标志和文件结束标志置为0。假设在调用一个输入输出函数时出现错误,ferror函数值为一个非

22、0值。在调用clearerr(fp)后,ferror(fp)的值变成0。只要出现错误标志,就一直保留,直到对同一文件调用clearerr函数或rewind函数,或任何其他一个输入输出函数。问题 检查命令行所列出的文件test.txt中每一行的左括号“(”及右括号“)”是否匹配,如有错误,将错误所在行数写入文件result.txt中。对此问题我们要考虑的第一步,还是遵循文件操作的“三步曲”,首先打开两文件test.txt及result.txt;再次就是对被测文件test.txt中的左右括号,逐行计数比较,直到读完该文件为止,将左右括号不对称的行数数据写入文件result.txt中(即对文件读写)

23、;然后关闭两个文件分析实现#include stdio.hmain(argc,argv)int argc;char*argv ;FILE *test,*result;int i,j,line,sign,x;char ch;if(argc9)/*对行数数值从最高位依次取值,每次只取一位,并记下其整除后的指数倍数。*/ch=ch/10;i+;fputc(ch+48,result);/*对行数数值从最高位依次转换为字符写入result所指的文件(即result.txt)中,每次只写入一位。*/for(j=0;ji;j+)ch=ch*10;/*通过其指数倍数原还取刚才取值。*/ch=x-ch;/*计算

24、好下一取值。*/x=ch;fputc(n,result);/*某一行数数值字符写入完后,进行换行,写下一行数。*/if(sign)printf(success!);fclose(test);fclose(result);其运行结果为:(1)如果test.txt文件中每一行中的左右括号对称数目相同则输出显示“success!”;(2)如果不同,将不同的行数数字写入result.txt文件中。在对文件进行操作处理时要记住其“三步曲”,即打开文件对文件中数据存取关闭文件。文件操作的函数有:(1)文件的打开与关闭函数;(2)文件的读写函数;(3)文件的定位与文件状态函数。在对文件进行操作处理时极易犯的错误:(1)文件的打开与文件关闭数不对称;(2)文件的打开方式与文件的存取方式不一致;(3)读取文件数据时所用的格式与文件实际数据格式不符;(4)对文件的读写函数的意义不明确;(5)fseek()函数的位移量要求是长整型,ftell()函数的返回值是长整型数据,注意数据类型的匹配问题常用的缓冲文件系统函数作业作业1 1、教材、教材第十一章第十一章课后习题。课后习题。2 2、作业集、作业集第十一章第十一章。

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|