第12章 文件1.ppt_第1页
第12章 文件1.ppt_第2页
第12章 文件1.ppt_第3页
第12章 文件1.ppt_第4页
第12章 文件1.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1.华北电力大学计算机科学系C语言课程组C语言程序设计第12章文档。学习目标,什么是文档?如何存储C文件?什么是文本文件和二进制文件?如何打开和关闭文件?如何读写文件?如何编写程序和处理外部数据?3.12.1文件概述。问题介绍:我们想对文件中存储的100名学生的数据进行评分统计。如何对付他们?我们想在文件中写一些文字,如何处理它们?文件类型用C语言提供,可以实现文件的存储和访问。4,示例12-1将是“我是学生!”写入文件f1.txt,# include # include void main()文件* FP如果(FP=fopen(“f1 . txt”,“w”)=空)打印(“文件打开错误!n”)

2、;退出(0);“我是学生!”);如果打印失败(“无法关闭文件!n”);退出(0);定义文件指针、打开文件、关闭文件、写入文件和5.12.1.2文件的概念。文件是指相关数据的有序集合。这个数据集有一个名字叫做文件名。例如源程序文件*。cpp目标文件*。obj可执行文件*。库文件(头文件)* .h. PDF文件word文件。txt文件,6,文件分类,用户角度分类1,普通文件前面列出的所有文件2,设备文件、打印机、显示器、键盘等的编码方法分类。1,二进制文件:存储二进制编码形式2,文本文件:存储相应的字符代码,7,二进制文件和文本文件的区别,(1)文本文件占用更多的字节并将存储器中的数据写入文本文件

3、。二进制文件占用的字节较少,读写操作不需要转换,因此访问速度相对较快。(2)文本文件可以用记事本直接查看,如C语言的源程序文件;二进制文件不能直接查看,比如C可执行程序文件。(3)一般情况下,原始数据和最终运行结果保存在文本文件中,以供查看和修改;在运行结果中间使用二进制文件可以提高访问速度。8、12.1.3缓冲文件系统,由于磁盘的读写速度比内存慢得多,为了减少等待时间,在读写文件的过程中采用了内存缓冲技术。程序、内存缓冲区、磁盘、9,12.1.4文件结构和文件指针、文件结构定义(包含在stdio.h中)、typedef结构短级别;/*文件状态*/未签名标志;/*文件状态标识*/char FD

4、;/*文件描述*/short b size;/*缓冲区大小*/无符号char *缓冲区;/*文件缓冲区位置*/无符号char * curl/*文件的当前读/写位置*/无符号字符保持;/*缓冲区中的剩余字符*/无符号ist amp;/*临时文件id */短令牌;/*有效性检查*/FILE;10,将文件类型指针的格式定义为:FILE * fpFp用于指向文件缓冲区;你可以用fp操作文件。11,12.2文件打开和关闭,12.2.1显示文件内容例12-2已知一个数据文件f.dat存储四个电话号码信息,包括姓名、座机和手机,文件内容如下:源程序如下:王晓燕51963578明51

5、962543华51973325 13933666char name20char tel10char mobil20如果(fp=fopen(d:f.txt,r)=空)打印(文件打开错误!n);出口(1);while(!feof(fp) fscanf(fp,%s%s%s,名称,电话,Mobil);printf(%st%st%sn,名称,电话,Mobil);如果(!打印失败(无法关闭文件!n);出口(1);文件打开不成功,关闭不成功,并且没有到达文件的末尾。在13,12.2.2,文件由标准函数fopen()打开,其一般调用形式为:文件指针名称=fopen(“文件名”、“文件

6、打开方法”);注意:“文件指针名称”必须是被描述为文件类型的指针变量;括号中的两个参数“文件名”和“文件打开方法”是字符串。“文件名”表示要对哪个文件进行操作,并且必须表示文件的路径,默认为应用程序的当前路径;文件打开方法用于确定如何处理打开的文件。fopen()函数有一个返回值。如果执行成功,该函数将返回包含文件缓冲区等信息的文件结构的地址,并将其分配给文件指针名称。否则,将返回空文件指针。14,例如,FILE * fp;fp=fopen(file_a,r);角色:在当前目录下打开文件file_a,并使fp指向该文件;“r”表示只允许“读取”操作。文件*fp。函数:打开c盘根目录下的文件F1

7、;“rb”指定文件是二进制文件,并且只允许二进制读取。两个反斜杠 中的第一个表示转义符,第二个表示根目录。15,打开文件时,如果有错误,fopen将返回一个空指针值NULL。在程序中,这些信息可以用来判断是否完成打开文件的工作并进行相应的处理。因此,以下程序段通常用于打开文件:(FP=fopen (c:f1,Rb)=null)printf(打开c:f1时出现错误);出口(1);16,使用文件,17,12.2.3关闭文件,函数调用格式为:Int fclose(文件指针);无错误返回0,有错误返回非0。如果(fclose(fp)打印失败(无法关闭文件!n);出口(1);18,12.3读写文本文件,

8、12-3将键盘输入的字符保存到文件中,然后读取并显示文件中的数据。# include # include void main()FILE * pf;char c;如果(pf=fopen(f.txt,w)=空)打印(文件打开错误!n);出口(1);而(c=getchar()!=#) fputc(c,pf);f close(pf);pf=fopen(f.txt,r);while(!feof(pf) printf(%c,c=fgetc(pf);f close(pf);19,12.3.2字符读写功能fgetc()和fputc(),1。函数从指定文件中读取一个字符,函数调用形式为:字符变量=文件指针。2

9、.写入字符函数FPUTC()FPUTC()的功能是将字符写入指定的文件。函数调用的形式是:FPUTC(字符数量,文件指针);20,示例12-4假设在磁盘D的根目录中有一个ASCLL代码文件“f1.dat”,其内容是“我是学生”。编程完成:显示文件“f1.dat”的内容;将字符串“你是一个工人”写入文本“f1 . dat”;再次显示文件“f1.dat”的内容。分析:要显示指定文本文件的内容,然后写入新内容,您必须打开该文件,并将该文件的使用模式指定为“R”,这意味着应该先读取然后写入同一个文本文件。写入的新内容会覆盖原始内容。21,#包含无效主()FILE * pf你是一个工人。c;int k。

10、char chIf (pf=fopen (d:f1)。dat,r)=null) printf(文件不存在n);退出(0);Printf(原始文件:n);while(!Fe of(pf)ch=fgetc(pf);put char(ch);printf(n);对于(int I=0;斯特里。=0;i ) fputc(stri,pf);Printf(新文件为:倒带(pf);while(!Fe of(pf)ch=fgetc(pf);put char(ch);printf(n);22、fgetc功能的使用有如下说明:在fgetc()函数调用中,读取文件必须以读或读写模式打开。2.读取字符的结果不能分配给字

11、符变量,如fg etc(FP);但是读取的字符无法保存。3.文件内部有一个位置指针。用于指向文件的当前读写字节。打开文件时,指针总是指向文件的第一个字节。使用fgetc()函数后,位置指针将向后移动一个字节。23,使用23的说明,fputc()函数,1。书写的文件可以通过写、读、写和追加来打开。当通过写入或读写打开现有文件时,原始文件内容将被清除,写入字符将从文件的开头开始。如果您想要保留原始文件的内容,并且想要将写入的字符存储在文件的末尾,则必须通过追加来打开文件。如果写入的文件不存在,请创建该文件。2.每次写入一个字符,文件中的指针向后移动一个字节。3.fputc()函数有一个返回值。如果

12、写入成功,它将返回写入的字符,否则它将返回一个电渗流。它可以用来判断写是否成功。24,12.3.3字符串读写函数fgets()和fputs(),1。函数调用格式:fgets(s,n,FP);函数:从文本文件中读取字符串,系统会自动在读取的字符串末尾添加一个字符串结束符号。0参数:S可以是存储在内存中的字符串的第一个地址。n表示一次从文件中读取n-1个字符,例如:fgets(str,10,FP);从fp相关文件中读取不超过9个字符,并将其存储在数组字符串中。25、2.fputs()函数调用格式fputs(s,FP);函数:当向文件写入S时,字符串S的结束符0不会被写入文件。参数:s是要写入的字符

13、串,可以是字符数组名、字符指针变量或字符串常量;Fp是文件指针的返回值:如果函数执行成功,函数返回最后写的字符;否则,该函数返回电渗流。示例:char *str=hello world!fput(str,FP);26,示例12-5创建一个文件,将字符串“我是学生”写入文件并读出文件内容。此外,用记事本打开文件并验证结果。分析:首先从键盘输入文件名,创建一个新文件,指定文件使用方式为“W”,然后将键盘读取的字符串写入文件,关闭文件。重新打开文件,指定文件用作“r”,并使用fgets()函数一次从文件中读取一串字符,并在终端上显示它们。27、# include # include main()FILE * FP;char str30char str130char文件名30;printf(请输入文件名:n);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论