欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言程序设计第10章文件处理.ppt

    • 资源ID:70104836       资源大小:306.99KB        全文页数:32页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言程序设计第10章文件处理.ppt

    第10章 文 件 处 理学习目标1了解文件的基本概念;2理解文件的基本应用;3掌握利用文件管理函数进行文件的打开、读写及关闭等基本操作方法。10.1 10.1 文件的基本概念文件的基本概念文 件ASCII 文件(text文件)二进制文件C对文件的处理方法缓冲文件系统非缓冲文件系统例:整数10000,在内存中占两个字节,输出到磁盘上若以ASCII形式占5个字节:00110001 00110000 00110011 00110000 00110000 若以二进制形式占2个字节:0010011100010000C文件是一个字节流或二进制流。旧的C版本(如Unix系统下使用的C)有两种对文件的处理方法:一种叫“缓冲文件系统”,一种叫“非缓冲文件系统”。缓冲文件系统:系统自动为正在使用的文件在内存开辟缓冲区。非缓冲文件系统:由程序为文件设置缓冲区。缓冲区文件系统读写文件操作示意图缓冲区文件系统读写文件操作示意图程序数据区输出文件缓冲区外存输入文件缓冲区10.2 10.2 文件类型指针文件类型指针 通过文件指针就可对它所指的文件进行各种操作。说明文件指针的一般形式为:FILE*指针变量名;FILE*fp;10.3 10.3 文件的基本操作文件的基本操作10.3.1 10.3.1 文件的打开文件的打开 在打开一个文件时,通知给编译系统以下三个信息:需要打开的文件名,即准备访问的文件的名字;使用文件的方式(读还是写等);让哪一个指针变量指向被打开的文件。打开文件操作由fopen函数来完成。fopen函数的一般调用形式为:文件指针名=fopen(“文件名”,“使用文件方式”);如:FILE*fp;fp=fopen(file1,r);文件使用方式含 义“r”(只读)“w”(只写)“a”(追加)“r+”(读写)“w+”(读写)“a+”(读写)打开用于只读打开用于写打开用于在文本尾写入,文件不存在时则建立打开一个已存在的文件,用于读和写(更新)建立一个新文件,用于写打开用于在文本尾写入,文件不存在则建立(更新)说明:说明:(1)在打开一个文件时,如果出错,fopen函数将返回一个空指针值NULL。常用下面的程序段打开文件:if(fp=fopen(file1,r)=NULL)printf(cannot open this file!n);exit(0);(2)把文本文件读入内存时,要将ASCII码转换成二进制码,而把文件以文本方式写入磁盘时,也要把二进制码转换成ASCII码。而对二进制文件的读写不存在这种转换。(3)运行一个C程序时,系统会自动打开三个文件:标准输入文件、标准输出文件、标准出错输出。通常情况下,stdin与终端键盘连接,stdout和stderr与终端屏幕连接。10.3.2 10.3.2 文件的关闭文件的关闭fclose函数,一般调用形式是:fclose(文件指针);如:fclose(fp);其中fp是要关闭文件的文件指针。10.3.3 10.3.3 文件的读写文件的读写一、字符读写函数 (fputc/fgetc或putc/getc)格式:fgetc(fp);fputc(ch,fp);#define putchar(c)fputc(c,stdout)#define getchar()fgetc(stdin)例:从键盘上输入一些字符,逐个将它们送到磁盘上去,直到输入一个“”为止。#include stdio.hmain()FILE*fp;char ch,filename10;scanf(%s,filename);if(fp=fopen(filename,w)=NULL)printf(cannot open file n);exit(0);ch=getchar();while(ch!=#)putc(ch,fp);putchar(ch);ch=getchar();fclose(fp);#include stdio.hmain()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(0);例:将一个磁盘文件中的信息复制到另一个磁盘文件中。if(out=fopen(outfile,w)=NULL)printf(cannot open outfilen);exit(0);while(!feof(in)putc(getc(in),out);fclose(in);fclose(out);#include stdio.hmain(argc,argv)int argc;char*argv;FILE*in,*out;if(argc!=3)printf(You forgot to enter a filenamen);exit(0);例:修改上例,使之在执行可执行文件时输入两个文件名。if(in=fopen(argv1,r)=NULL)printf(cannot open infilen);exit(0);if(out=fopen(argv2,w)=NULL)printf(cannot open outfilen);exit(0);while(!feof(in)fputc(fgetc(in),out);fclose(in);fclose(out);二、字符串读二、字符串读/写函数写函数读字符串函数的一般调用形式为:fgets(字符数组名,n,文件指针);写字符串函数fputs的一般调用形式为:fputs(字符串,文件指针);例:从c1.txt文件中读入一个含10个字符的字符串。#include void main()FILE*fp;char str11;if(fp=fopen(c1.txt,r)=NULL)printf(nCannot open file strike any key exit!);exit(0);fgets(str,11,fp);printf(n%sn,str);fclose(fp);例:在例10.2建立的文件c2.txt中追加一个字符串。#include void main()FILE*fp;char ch,st20;if(fp=fopen(c2.txt,a+)=NULL)printf(Cannot open file strike any key exit!);exit(0);printf(input a string:n);scanf(%s,st);fputs(st,fp);fclose(fp);三、数据块读三、数据块读/写函数写函数 数据块的读写可以分别由函数fread和fwrite来完成。fread函数调用的一般形式为:fread(buffer,size,count,fp);fwrite函数的一般调用形式为:fwrite(buffer,size,count,fp);说明:(1)fread和fwrite用来一次从(向)文件读(写)size*count字节。(2)fread和fwrite如果调用成功,则返回count的值,即输入或输出数据块的完整个数。(3)fread和fwrite一般用于二进制文件的输入输出,因为它们是按数据块的长度来处理输入输出的。例:从键盘输入4个学生的有关数据,然后把它们转存到以“stu_list”命名的磁盘文件中。#include#define SIZE 4struct student_type char name10;int num;int age;char addr15;stud SIZE;void save()FILE*fp;int i;if(fp=fopen(stu_list,wb)=NULL)printf(can not open filen);return;for(i=0;iSIZE;i+)if(fwrite(&studi,sizeof(struct student_type),1,fp)!=1)/*将一个长度为29字节的数据块送到“stu_list”文件中*/printf(file write errorn);fclose(fp);void main()int i;for(i=0;iSIZE;i+)scanf(%s%d%d%s,studi.name,&studi.num,&studi.age,studi.addr);save();例:编写print函数,将例10-5生成的磁盘文件stu_list中的数据输出到显示器上。void print(char*filename)FILE*fp;int i;if(fp=fopen(filename,rb)=NULL)printf(can not open filen);return;for(i=0;i2)。编程要求:(1)源程序存于MYF1.C文件中。(2)程序运行的结果存于MYF1.OUT文件中。(3)数据文件的打开、关闭和使用均要用C语言的文件管理语句来实现。(4)在结果文件中,要求每行输出四个数。#include void main()FILE*fp;long int a20=0,1,1;int i;if(fp=fopen(myf1.out,w)=NULL)printf(Can not open the file myf1.out!n);exit(1);for(i=3;i20;i+)ai=ai-3+2*ai-2+ai-1;for(i=0;i20;i+)fprintf(fp,%12ld,ai);if(i+1)%4=0)fprintf(fp,n);fclose(fp);10.4 10.4 程序设计举例程序设计举例例:有两个磁盘文件a.txt和b.txt,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到新文件c.txt中。#include stdio.hvoid main()FILE*fp;int i,j,n,ni;char c160,t,ch;if(fp=fopen(a.txt,r)=NULL)printf(file a cannot be openedn);exit(0);for(i=0;(ch=fgetc(fp)!=EOF;i+)/*将a.txt的字符存入c数组中*/ci=ch;fclose(fp);ni=i;if(fp=fopen(b.txt,r)=NULL)printf(file b cannot be openedn);exit(0);for(i=ni;(ch=fgetc(fp)!=EOF;i+)/*将b.txt的字符存入c数组中*/ci=ch;fclose(fp);n=i;for(i=0;in-1;i+)/*对c数组排序*/for(j=i+1;jcj)t=ci;ci=cj;cj=t;fp=fopen(c.txt,w);for(i=0;in;i+)fputc(ci,fp);fclose(fp);例:有五个学生,每个学生有3门课的成绩,从stud.dat文件中读学生学号、姓名、三门课成绩,并计算每个学生的平均成绩,将原有的数据和计算出的平均成绩存放在磁盘文件“stud1”中。stud.dat文件中的数据如下:001 a 85 70 80002 b 90 80 85003 c 90 95 85004 d 60 70 80005 e 85 70 80#include stdio.hstruct student char num6;char name8;int score3;float avr;stu5;void main()int i,j,sum;FILE*fp;fp=fopen(stud.dat,rb);for(i=0;i5;i+)fscanf(fp,%s%s,stui.num,stui.name);sum=0;for(j=0;j3;j+)fscanf(fp,%d,&stui.scorej);sum+=stui.scorej;stui.avr=sum/3.0;fclose(fp);fp=fopen(stud1,wb);for(i=0;i5;i+)if(fwrite(&stui,sizeof(struct student),1,fp)!=1)printf(file write errorn);fclose(fp);

    注意事项

    本文(C语言程序设计第10章文件处理.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开