书签 分享 收藏 举报 版权申诉 / 53
上传文档赚钱

类型第8章文件操作2课时课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4975352
  • 上传时间:2023-01-29
  • 格式:PPT
  • 页数:53
  • 大小:2.22MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第8章文件操作2课时课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    文件 操作 课时 课件
    资源描述:

    1、语言程序设计C语言程序设计语言程序设计 信息与电气工程学院信息与电气工程学院20122012年年5 5月月CDIO.flash8net_2454.swf语言程序设计第八章第八章 文件操作文件操作工资管理系统之工资管理系统之数据永久记录数据永久记录 任务一任务一 学习目标学习目标 任务二任务二 了解文件了解文件 任务三任务三 了解文件的存储形式了解文件的存储形式 任务四任务四 了解对文件的操作了解对文件的操作 任务五任务五 打开文件打开文件fopen 任务六任务六 将职工工资数据写入文件将职工工资数据写入文件fwrite 函数的应用函数的应用语言程序设计 任务七任务七 从文件中读取职工工资数据从

    2、文件中读取职工工资数据fread 函数的应用函数的应用 任务八任务八 关闭文件关闭文件fclose 函数的应用函数的应用 任务九任务九 更多的读写文件函数更多的读写文件函数 任务十任务十 了解文件数据的定位了解文件数据的定位 任务十一任务十一 知识扩展知识扩展 任务十二任务十二 精选案例精选案例 任务十三任务十三 本章要点汇总本章要点汇总 任务十四任务十四 实力检验实力检验语言程序设计1、本章主要任务就是解决数据的保存问题;2、数据的保存涉及文件的概念和操作;3、如何通过语言代码加以实现,需要深入学习文件的相关知识。语言程序设计1、“文件”:是指存放在外存储器上的各类信息的有序集合;2、按照不

    3、同的标准,可以将文件进行分类;3、文件操作主要指对文件的建立、删除、读取、写入等操作。语言程序设计1、根据文件内数据组织形式的不同,可以将数据文件分为文本文件和二进制文件;2、文本文件记录的是字符信息,其中每一个字节存放一个 ASCII 代码,表示一个字符,如字母、数字、标点符号等。而二进制文件则是将数据按其在内存中的原始存储形式,直接输出到磁盘上,即文件的内容就是内存的直接映像;3、二进制文件居多。语言程序设计打开文件、读文件、写文件、关闭文件等语言程序设计ANSI C 规定了标准输入/输出函数库stdio.h中的 fopen 函数,用来实现打开文件的操作。其调用方式通常为:FILE *fp

    4、;/*fp为文件指针变量标识符,由程序设计人员命名*/fp=fopen(文件名,文件打开方式);例如:打开工资管理系统中的职工工资数据文件gz.dat FILE *file;file=fopen(gz.dat,rb“);/*rb表示以只读方式打开二进制文件 gz.dat*/FILE是一个结构,每个被打开使用的文件都会在内存中开辟一个区域,用于存放该文件的有关信息,诸如文件的名字、状态和当前位置等此处是需要打开的文件,以字符串形式表达,如果包含路径,应该如何表达呢?此处是打开文件的方式,具体请看教材P243语言程序设计r只读以读方式打开文本文件w只写以写方式创建文本文件,原文件存在则删除后创建,

    5、文件不存在则直接创建a追加以追加方式打开文本文件,只允许在文件尾写入rb只读以读方式打开二进制文件wb只写以写方式创建二进制文件,原文件存在则删除后创建,文件不存在则直接创建ab追加以追加方式打开二进制文件,只允许在文件尾写入r+读写以读写方式打开文本文件,可读可写w+读写以读写方式创建文本文件,原文件存在则删除后创建,文件不存在则直接创建a+读写以读写方式打开文本文件,允许读,亦允许在文件末写入rb+读写以读写方式打开二进制文件,允许读,亦允许写语言程序设计 if(file=fopen(gz.dat,wb)!=NULL)/*判断打开成功*/*成功后的处理*/fwrite(&zggz0,siz

    6、eof(zggz0),n+1,file);/*所有记录一次写入文件*/fclose(file);/*关闭文件*/printf(记录保存完毕!n);或者:if(file=fopen(gz.dat,wb)=NULL)/*判断打开失败*/printf(文件打开失败);语言程序设计能够将数据写入文件的能够将数据写入文件的 C 语言标准函数有语言标准函数有很多,在实际的软件开发过程中,较常用的是很多,在实际的软件开发过程中,较常用的是函数函数。size_t fwrite(const void*buf,size_t size,size_t count,FILE*stream)从内存地址 bufbuf 处开

    7、始,将countcount 个 sizesize 大小的数据写入文件streamstream中。成功写入的实际数据块个数。stdio.h 相关函数参见任务七中的fread()函数。语言程序设计以下是以下是“职工工资管理系统职工工资管理系统”中的一个自定义函数中的一个自定义函数void write()FILE*file;/*声明文件指针*/if(n=-1)/*职工人数为0时*/printf(没有数据可存!按任意键返回主菜单。n);getch();return;if(file=fopen(gz.dat,wb)!=NULL)/*以二进制方式打开职工工资数据文件,并判断是否成功*/fwrite(&zg

    8、gz0,sizeof(zggz0),n+1,file);/*所有记录一次写入文件*/语言程序设计 能够从文件中读取数据的能够从文件中读取数据的 C 语言标准函数语言标准函数同样有很多,在实际的软件开发过程中,较常同样有很多,在实际的软件开发过程中,较常用的是用的是 函数函数。size_t fread(void*buf,size_t size,size_t count,FILE*stream)从从 streamstream 指示的文件中,读取指示的文件中,读取 countcount 个个 sizesize 大小的数据,放入内大小的数据,放入内存地址存地址 bufbuf处。处。成功读取的数据块个数

    9、。成功读取的数据块个数。stdio.h 语言程序设计以下是以下是“工资管理系统工资管理系统”中的一个自定义函数,中的一个自定义函数,其功其功能是实现将职工工资信息从文件能是实现将职工工资信息从文件gz.dat读入内存,并存放于结读入内存,并存放于结构数组构数组 zggz100中。中。void read()FILE*file;/*声明文件指针*/if(file=fopen(gz.dat,rb)=NULL)/*以二进制方式打开职工工资数据文件,并判断是否失败*/printf(nnt职工工资数据文件无法打开,或为空!);printf(nnt按任意键进入主菜单);getch();return;else

    10、 /*文件打开成功时*/语言程序设计程序对指定文件进行读写操作完成后,必须“关闭”该文件。尤其是写操作,因为,在缓冲文件系统中,写操作的直接目标是内存缓冲区,而不是磁盘,“关闭”文件就是将内存缓冲区中的内容写入到磁盘文件中,所以,只有执行了“关闭”操作,才能保证文件内容的完整性。语言程序设计fclosefclose()()函数说明函数说明int fclose(FILE*stream)关闭文件指针。关闭前清除所有与关闭文件指针。关闭前清除所有与streamstream相关联的缓冲区,释放系统分相关联的缓冲区,释放系统分配的缓冲区。配的缓冲区。成功时返回成功时返回0 0;失败时返回;失败时返回EO

    11、FEOFstdio.h EOFEOF意为意为end-of-fileend-of-file,是,是C C内部宏定义:内部宏定义:#define EOF-1#define EOF-1 对文本文件读操作时,经常以此判断是否文对文本文件读操作时,经常以此判断是否文件读取完毕。件读取完毕。语言程序设计int fgetc(FILE*stream)从指针streamstream指定的文件中读取一个字符成功时返回所读字符;当遇到文件结束符EOFEOF时,返回-1stdio.h相关函数参见第三章任务六中的getchargetchar()()函数语言程序设计int fputc(int ch,FILE*stream

    12、)将字符ch写入到指针stream指定的文件中成功时返回所写字符的ASCII码值;失败时返回EOFstdio.h相关函数参见第三章任务六中的putchar()函数语言程序设计【案例【案例8-1】从一个文本文件中读取一个字符,然后写入到另一个文本文件中。分析分析在“C:”目录下创建一个文本文件text.txttext.txt,内容如图8-1所示;以读方式打开上述文本文件,并读取一个字符;以写方式创建文件C:text1.txt,再将字符写入其中,同时在屏幕上进行显示。语言程序设计#include int main()FILE*fp;/*定义文件指针*/char ch;/*记录从c:text.txt

    13、中读取的、向c:text1.txt写入的一个字符*/if(fp=fopen(c:text.txt,r)!=NULL)ch=fgetc(fp);/*打开文件成功后,读取一个字符赋值给ch*/else return 0;/*打开文件失败时,退出程序并返回0*/fclose(fp);/*关闭文件*/if(fp=fopen(c:text1.txt,w)!=NULL)fputc(ch,fp);/*打开成功后,将ch中记录的字符写入文件*/语言程序设计咋整呢?咋整呢?语言程序设计char*fgets(char*str,int num,FILE*steam)从streamstream中读取num-1num-

    14、1个字符,放入strstr所指的字符数组中,并将NULLNULL放入到最后一个字符后。成功时返回成功时返回strstr;失败时返回空指针。;失败时返回空指针。stdio.hstr可以是数组名;当读了num-1个字符后或遇到换行符时,函数停止读过程。语言程序设计int fputs(const char*str,FILE*stream)将str所指的字符串内容写入指针stream指定的文件中,字符串结束标志NULL并不写入。成功时返回0 0;失败时返回EOFEOF。stdio.h语言程序设计text.txttext.txttext2.txttext2.txt语言程序设计#include int m

    15、ain()FILE*fp;/*定义文件指针*/char str255;/*记录从c:text.txt中读取的向c:text2.txt写入的一个字符串*/if(fp=fopen(c:text.txt,r)!=NULL)fgets(str,255,fp);/*打开文件成功后读取一个字符串存入str*/else return 0;/*打开文件失败时退出程序*/fclose(fp);/*关闭文件*/if(fp=fopen(c:text2.txt,w)!=NULL)fputs(str,fp);/*打开文件成功后写入str中记录的字符串*/else return 0;/*打开文件失败时退出程序*/语言程序

    16、设计int fscanf(FILE*stream,const char*format,address-list)从文件指针streamstream指向的文件中读取数据,并按照格式化字符串要求的格式,将数据存入address-listaddress-list地址列表中(参照scanfscanf()()函数)。成功则返回address-listaddress-list个数;失败则返回EOFEOF。stdio.h在使用%s读取字符串时,结束位置必须是空格、制表符或回车。类似函数参见第三章任务六中的scanf()函数。语言程序设计int fprintf(FILE*stream,const char*f

    17、ormat,argument-list)按指定格式,向streamstream指向的文件写入数据(参照printfprintf()()函数)。成功则返回写入的字节数,失败则返回EOFEOF。类似函数参见第三章任务六中的printfprintf()()函数。stdio.h语言程序设计fscanffscanffprintffprintfC:text.txtC:text.txtC:text3.txtC:text3.txt语言程序设计#include main()FILE*fp;char str255;if(fp=fopen(C:text.txt,r)!=NULL)fscanf(fp,%s,str);

    18、/*此处使用了fscanf()函数读取字符串*/else return 0;fclose(fp);if(fp=fopen(C:text3.txt,w)!=NULL)fprintf(fp,%s,str);/*此处使用了fprintf()函数写入字符串*/else return 0;puts(str);语言程序设计实际应用中的数据文件,往往都会在文件的开始位置有一部分特殊的数据,以记录该文件的一些属性,如开发公司名称、版本号、数据结构等,这个特殊的数据区域,称之为文件头。因此,需要读取的数据往往并不在开始位置。所以,掌握rewind()和fseek()函数的应用显得尤为重要。语言程序设计void

    19、rewind(FILE*stream);将streamstream指向的文件内部数据位置指针重新移动到开始位置,同时清除与streamstream相关的文件结束和错误标志。无。stdio.h语言程序设计语言程序设计#include main()FILE*fin,*fout;/*分别声明用于读取和写入的两个文件指针*/fin=fopen(C:text.txt,r);/*以只读方式打开C:text.txt,返回的指针赋给fin指针*/fout=fopen(C:text4.txt,w);/*以只写方式打开C:text4.txt,返回的指针赋给fout指针*/while(!feof(fin)putch

    20、ar(fgetc(fin);/*通过循环从fin中读取字符并显示于屏幕*/rewind(fin);/*将上面循环执行后自动移动到文件尾的内部指针移动到起始位置*/while(!feof(fin)fputc(fgetc(fin),fout);/*通过循环从fin中读取字符并写入fout中*/fclose(fin);/*关闭文件*/语言程序设计int fseek(FILE*stream,long offset,int origin);根据offset和origin的值,移动stream指向的文件内部数据位置指针。origin确定基准位置,offset是相对origin基准位置的偏移字节数,其值若是

    21、正数,表示指针向后移动,若是负数,表示指针向前移动。成功时返回0;失败时返回非0。stdio.horiginorigin有三个基准位置,且有三个对应的宏定义,如表语言程序设计origin取值对应的宏含义0SEEK_SET文件开始位置1SEEK_CUR 文件当前位置2SEEK_END 文件结束位置语言程序设计语言程序设计#include#include main()FILE*fp;int i;/*声明记录读取字符个数的变量*/if(fp=fopen(C:text.txt,r)!=NULL)/*如果打开文件C:text.txt成功,执行以下复合语句*/fseek(fp,6,SEEK_SET);/*

    22、将指针从文件起始位置向后移动6个字节*/i=10;while(i-!=0)putchar(fgetc(fp);/*通过循环从fp文件当前位置读取10个字符并显示于屏幕*/putchar(n);/*将屏幕光标移动到新行行首*/fseek(fp,-8,SEEK_END);/*将指针从文件结束位语言程序设计语言程序设计long ftell(FILE*stream)返回stream指定的文件中内部数据指针位置。成功时返回当前内部指针位置,以字节数表示;失败时返回-1L。stdio.h返回fp所指文件内部数据指针当前位置long m;if(m=ftell(fp)!=-1L)printf(m=%ldn,m

    23、);else exit(0);语言程序设计int feof(FILE*stream)检查文件内部数据指针位置,以确定是否已经到达stream指定的文件末尾。处在文件尾时返回非0值;否则返回0。stdio.h该函数既可用于判断二进制文件,又可用于以判断文本文件。检测文件内部数据指针是否到达文件尾File*fp;if(feof(fp)printf(文件内部数据指针已经到达文件尾文件内部数据指针已经到达文件尾n);else exit(0);语言程序设计语言程序设计#include main()FILE*ftxt,*fpho;char ch;if(ftxt=fopen(c:text.txt,rb)=N

    24、ULL)printf(c:text.txt文件无法打开!n);return;if(fpho=fopen(c:photo.jpg,ab)=NULL)printf(c:text.txt文件无法打开!n);return;语言程序设计语言程序设计#include main()FILE*fpho;char ch;if(fpho=fopen(c:photo.jpg,rb)=NULL)printf(c:photo.jpg件无法打开!n);return;while(!feof(fpho)/*文件内部指针未到文件尾,执行循环体*/ch=fgetc(fpho);/*从ftxt所指文件中读取一个字节信息*/语言程序

    25、设计语言程序设计#include#include void format();/*参数为“/?”时的帮助提示*/int copyf(char*txt,char*pho);/*实现将机密信息追加到目标文件的功能*/main(int argc,char*argv)int flag;if(argc=1)format();else if(argc=2)&strcmp(argv1,/?)=0)format();else if(argc=3)flag=copyf(argv1,argv2);语言程序设计语言程序设计#include void echo(char*fname);/*用于显示fname所指文件内

    26、容*/main()FILE*fp;int i;char fname=c:data.dat;if(fp=fopen(fname,w)=NULL)/*以二进制写方式打开fname文件*/printf(%s文件无法打开!n,fname);return 0;for(i=-100;i=100;i+)语言程序设计1.数据文件有文本文件和二进制文件之分。文本文件记录的是字符的ASCII编码,而二进制文件记录的是数据在内存的存储状态。2.文件操作的基本步骤是:打开文件、移动文件内部数据指针、读取或写入数据、关闭文件。语言程序设计3.对文件操作的函数汇总:打开文件:FILE*fopen(const char*f

    27、name,const char*mode)写入数据:size_t fwrite(const void*buf,size_t size,size_t count,FILE*stream)读取数据:size_t fread(void*buf,size_t size,size_t count,FILE*stream)关闭文件:int fclose(FILE*stream)读一字符:int fgetc(FILE*stream)写一字符:int fputc(int ch,FILE*stream)语言程序设计读字符串:char*fgets(char*str,int num,FILE*steam)写字符串:

    28、int fputs(const char*str,FILE*stream)格式读取数据:int fscanf(FILE*stream,const char*format,address-list)格式写入数据:int fprintf(FILE*stream,const char*format,argument-list)指针移回文件起始位置:int rewind(FILE*stream);指针按指定方式移动:int fseek(FILE*stream,long offset,int origin);语言程序设计返回数据指针当前位置:long ftell(FILE*stream)测试文件指针当前是否指向文件尾:int feof(FILE*stream)语言程序设计1-6题 选择题 考察基础知识7-10题阅读程序分析结果或填空考察知识应用能力重点:实验实训作业:2、3、7、8

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第8章文件操作2课时课件.ppt
    链接地址:https://www.163wenku.com/p-4975352.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


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

    163文库