单元10-文件操作_第1页
单元10-文件操作_第2页
单元10-文件操作_第3页
单元10-文件操作_第4页
单元10-文件操作_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、Page 1 C 课程课程单元单元十十 文件操作文件操作 Page 2 主要内容主要内容文件操作概述文件操作概述文件的打开与关闭文件的打开与关闭文件打开函数文件打开函数fopen() (重点)(重点)文件关闭函数文件关闭函数fclose() (重点)(重点)文件读写操作文件读写操作字符读写函数字符读写函数fputc()和和fgetc() (难点)(难点) 文件格式化读写文件格式化读写fprintf()和和fscanf() (难(难点)点)综合应用案例综合应用案例Page 3 【本章要点本章要点】 文件在计算机领域中是一个重要概念,其实质是文件在计算机领域中是一个重要概念,其实质是存储在计算机外

2、存上的一组相关信息的集合。文件的名存储在计算机外存上的一组相关信息的集合。文件的名字是唯一的,并且作为其本身的操作标志。与任何程序字是唯一的,并且作为其本身的操作标志。与任何程序设计语言一样,设计语言一样,C语言也提供了强大的机制来支持对文语言也提供了强大的机制来支持对文件的各类操作。本章内容围绕着二进制文件与文本文件件的各类操作。本章内容围绕着二进制文件与文本文件的操作展开,具体阐述了对它们的基本操作方法,对文的操作展开,具体阐述了对它们的基本操作方法,对文件的读出与写入,以及对文件的错误检测等做作初步介件的读出与写入,以及对文件的错误检测等做作初步介绍。绍。 Page 4 10.1.1 文

3、件的概念文件的概念 文件(文件(File):存放在外部介质(如计算机硬盘:存放在外部介质(如计算机硬盘、软件、光盘、优盘等)上的一组完整信息的集合。这、软件、光盘、优盘等)上的一组完整信息的集合。这些信息可为各国文字、图形、图像、电影、音乐、电子些信息可为各国文字、图形、图像、电影、音乐、电子小说,甚至包括病毒程序等。小说,甚至包括病毒程序等。10.1 文件的基本概念文件的基本概念Page 5 10.1.2 文件名称文件名称文件名:是引用文件的唯一的标识符。文件名包括三个要素:v文件路径,文件路径,是指文件在外部存储器设置中的位置,是指文件在外部存储器设置中的位置,路径一般以分隔符路径一般以分

4、隔符“”来体现存储位置的嵌套层次;如来体现存储位置的嵌套层次;如D:ProgramTCExample。 v文件主名,文件主名,命名规则遵循标识符的命名规则。命名规则遵循标识符的命名规则。v文件扩展名文件扩展名(或称文件后缀),在文件主名之后,(或称文件后缀),在文件主名之后,以以“.”符号分隔。用来反映文件的类型或性质。符号分隔。用来反映文件的类型或性质。10.1 文件的基本概念文件的基本概念Page 6 10.1.2 文件名称文件名称文件扩展名文件的性质或类型.c.cC C语言源程序文件语言源程序文件.cpp.cppTC 3.0TC 3.0语言源程序文件语言源程序文件.bas.basBasi

5、cBasic语言源程序文件语言源程序文件.txt.txt纯文本文件纯文本文件.dat.dat数据文件数据文件.doc.docWordWord文件文件.mdb.mdbAccessAccess数据库文件数据库文件.exe.exe可运行的程序文件可运行的程序文件可执行的命令文件可执行的命令文件.bmp.bmp位图图形文件位图图形文件.jpg.jpg压缩格式的图形文件压缩格式的图形文件.avi.avi微软公司开发的视频格式文件微软公司开发的视频格式文件.mp3.mp3压缩的音乐文件压缩的音乐文件常常用用文文件件扩扩展展名名10.1 文件的基本概念文件的基本概念Page 7 10.1.3 两种重要的文件

6、类型两种重要的文件类型 文本文件(文本文件(Text File),也称为ASC文件。每一个字节存储一个ASC码形式表示的字符。文本文件是可直接阅读的,使用Word或Windows的记事本打开即可看到文件的内容。扩展名为.txt的文件。 二进制文件(二进制文件(Binary File)。这类文件将文件中的数据按照它的二进制编码的形式存储。由于这类文件内容是二进制编码,因而它无法直接使用记事本或Word打开阅读。一般的可执行程序都为二进制文件,如扩展名为.exe或.com的文件即为二进制文件。10.1 文件的基本概念文件的基本概念Page 8 10.1.3 两种重要的文件类型两种重要的文件类型例如

7、:例如:有一个整型数据123,在两种文件中的存放形式分别如图11.1、图11.2所示。0000000001111011001100010011001000110011图11.1 在二进制文件中的存放形式 图11.2 在文本文件中的存放形式10.1 文件的基本概念文件的基本概念Page 9 10.1.3 两种重要的文件类型两种重要的文件类型文本文件与二进制文件的优缺点文本文件与二进制文件的优缺点:文本文件的优点文本文件的优点:字符输出的操作中不需转换直接输出,十分方便。文本文件的缺点:文本文件的缺点:一个字符占一个字节,文件占用的存储空间较多,读写时需要转换,访问的时空效率不高。二进制文件的优点

8、二进制文件的优点:二进制文件中的数据与数据的在内存中的表示形式一致。占单元数与操作系统和数据类型有关。二进制文件在存储数据时非常紧凑,占用存储空间较少;在读写时不需进行转换,具有较高的时空效率。二进制文件的缺点:二进制文件的缺点:二进制文件无法直接以字符形式输出,必须要经过一个转换过程。10.1 文件的基本概念文件的基本概念Page 10 实际应用中,有时需要把程序处理的数据结果保存成文件实际应用中,有时需要把程序处理的数据结果保存成文件,以备将来使用;或者程序处理的原始数据是从某个文件中读,以备将来使用;或者程序处理的原始数据是从某个文件中读取出来的。所以,如何实现数据的长期保存又能实现数据

9、共享取出来的。所以,如何实现数据的长期保存又能实现数据共享是程序设计的又一重要内容,其实质就是是程序设计的又一重要内容,其实质就是对文件的读写操作对文件的读写操作。 对文件的读写操作过程,如同读一本书或写一本书一样,文对文件的读写操作过程,如同读一本书或写一本书一样,文件操作的流程是什么?件操作的流程是什么?问题引入问题引入第一步:打开书本第一步:打开书本读书读书/写书写书第二步:读书中文字第二步:读书中文字 或者在书上写文字或者在书上写文字第三步:合上书本第三步:合上书本读写文件读写文件第一步:打开文件第一步:打开文件第二步:读取文件中的数据第二步:读取文件中的数据 或者向文件中写数据或者向

10、文件中写数据第三步:关闭文件第三步:关闭文件Page 11 10 10 文件操作文件操作10.1 文件操作概述文件操作概述10.2文件的打开与关闭文件的打开与关闭fopen()与与fclose() 10.3 文件读写操作文件读写操作10.4 综合案例综合案例Page 12 10.110.1文件操作概述文件操作概述 C语言通过系统提供的结构类型语言通过系统提供的结构类型FILE定义的指针变量定义的指针变量来访问文件来访问文件。结构类型。结构类型FILE已在头文件已在头文件“stdio.h”中定义中定义了,所以在对文件进行操作时,用了,所以在对文件进行操作时,用FILE直接定义文件指针直接定义文件

11、指针变量即可。变量即可。 10.1 文件操作概述文件操作概述读书用读书用“眼睛眼睛”,写,写书用书用“笔笔”,文件的,文件的读写用什么呢?读写用什么呢?Page 13 10.110.1文件操作概述文件操作概述定义形式为:定义形式为: FILE FILE * *文件指针变量名文件指针变量名; ; FILE必须大写,必须大写,*表示定义的变量是指针类型。表示定义的变量是指针类型。例:例: FILE *fp; 定义定义fp文件指针变量文件指针变量,当读文件时,当读文件时,fp就相当于就相当于“眼眼睛睛”,当写文件时,当写文件时,fp就相当于就相当于“笔笔”。文件有结束文件有结束标志标志EOF10.1

12、 文件操作概述文件操作概述Page 14 定义文件指针变量之后,就可以对文件进行操作了。定义文件指针变量之后,就可以对文件进行操作了。C语言提语言提供了大量的库函数来操作文件。供了大量的库函数来操作文件。 fopen(文件名,打开方式);(文件名,打开方式);第一步:打开文件第一步:打开文件第二步:读取文件中的数据第二步:读取文件中的数据 或者向文件中写数据或者向文件中写数据第三步:关闭文件第三步:关闭文件字符读写:字符读写:fgetc();fputc();格式读写:格式读写:fscanf();fprintf();Fclose(文件指针变量文件指针变量);10.110.1文件操作概述文件操作概

13、述10.1 文件操作概述文件操作概述Page 15 10.2 fopen()与与fclose()10.210.2文件的打开与关闭文件的打开与关闭fopen()fopen()与与fclose()fclose()定义文件指针变量之后,就可以对文件进行操作了。定义文件指针变量之后,就可以对文件进行操作了。C语言提语言提供了大量的库函数来操作文件。供了大量的库函数来操作文件。 fopen(文件名,打开方式);(文件名,打开方式);第一步:打开文件第一步:打开文件第二步:读取文件中的数据第二步:读取文件中的数据 或者向文件中写数据或者向文件中写数据第三步:关闭文件第三步:关闭文件字符读写:字符读写:fg

14、etc();fputc();格式读写:格式读写:fscanf();fprintf();Fclose(文件指针变量文件指针变量);Page 16 要打开的文件名,含路径打开方式打开方式-读读/写写例例 FILE *fp; fp= fopen (“c:fengyibkctest.dat”,”r”); 例例 FILE *fp; char *filename=“c:fengyibkctest.dat” fp= fopen(filename,”r”); “r+/rb+” (读写读写)“a/ab” (追加追加)“w/wb” (只写只写)“r/rb” (只读只读)“w+/wb+” (读写读写)“a+/ab+

15、” (读写读写)为为输入输入打开一个文本打开一个文本/二进制文件二进制文件为为输出输出打开或建立一个文本打开或建立一个文本/二进制文件二进制文件为读为读/写打开一个文本写打开一个文本/二进制文件二进制文件为读为读/写建立一个文本写建立一个文本/二进制文件二进制文件为读为读/写打开或建立一个文本写打开或建立一个文本/二进制文件二进制文件向文本向文本/二进制文件尾二进制文件尾追加追加数据数据文件使用方式文件使用方式含义含义10.2 fopen()与与fclose()10.210.2文件的打开与关闭文件的打开与关闭fopen()fopen()与与fclose()fclose()Page 17 #in

16、clude void main( )FILE *fp; /定义文件指针定义文件指针fp fp=fopen(“test.dat”,“r”);/只读方式打开只读方式打开test.dat文件文件if(fp=NULL) /判断文件是否打开成功判断文件是否打开成功,并输出状态信息并输出状态信息 puts(文件打开失败文件打开失败.);else printf(文件打开成功文件打开成功.);fclose(fp); /关闭打开的文件关闭打开的文件 10.2 fopen()与与fclose()10.210.2文件的打开与关闭文件的打开与关闭fopen()fopen()与与fclose()fclose()【例例1

17、0-2】打开当前目录中的打开当前目录中的test.dat文件,判断并输出文件文件,判断并输出文件打开状态信息,然后关闭文件。打开状态信息,然后关闭文件。文件名文件名只读打开只读打开运行结果:运行结果: Page 18 1定义一个文件指针定义一个文件指针fpin,指向以只读方式打开的,指向以只读方式打开的文本文件文本文件“d:testin.dat”。2定义一个文件指针定义一个文件指针fpout,指向以只写方式打开,指向以只写方式打开的文本文件的文本文件“d:testout.dat”。【随堂练习【随堂练习10-1】10.210.2文件的打开与关闭文件的打开与关闭fopen()fopen()与与fc

18、lose()fclose()【提示与思考提示与思考】1.文件指针变量定义文件指针变量定义 2.文件的打开文件的打开3.文件的关闭文件的关闭Page 19 10.3 10.3 文件读写操作文件读写操作 10.3.1 10.3.1字符读写字符读写fputc()和和fgetc()10.3.2 文件格式化读写文件格式化读写fprintf()和和fscanf()Page 20 1.字符写函数字符写函数fputc( ) 功能功能是将字符写入文件中是将字符写入文件中例:例: fputc(c,fp); #include #include void main( ) void main( ) char ch; c

19、har ch; FILE FILE * *fp;fp;/ /定义文件指针定义文件指针 fp=fopen(test.dat,w); fp=fopen(test.dat,w); while(ch=getchar()!=n) while(ch=getchar()!=n) / /循环输入字符循环输入字符 fputc(ch,fp); fputc(ch,fp); / /将字符将字符chch写入写入fpfp指向的文件指向的文件 fclose(fp); fclose(fp); 将字符将字符c写入写入fp指指向的文件中向的文件中【例例10-4】从键盘输入一行字符,将从键盘输入一行字符,将输入的字符输出到输入的字

20、符输出到test.dat文件中保存文件中保存10.3.1 字符读写字符读写fputc()和和fgetc() 10.3 10.3 文件读写操作文件读写操作程序程序演示演示 Page 21 2. 字符读函数字符读函数fgetc( ) 功能功能是从文件中读取一个字符是从文件中读取一个字符例:例: fgetc(fp); #include #include void main( ) void main( ) char ch; char ch; FILE FILE * *fp; /fp; /定义文件指针定义文件指针 fp=fopen(test.dat,r);fp=fopen(test.dat,r); ch

21、=fgetc(fp); ch=fgetc(fp); while(ch!=EOF) while(ch!=EOF) / /是否访问到文件尾是否访问到文件尾 putchar(ch); putchar(ch);ch=fgetc(fp);ch=fgetc(fp); /fp/fp从文件中从文件中 读取字符,并赋值给读取字符,并赋值给chch fclose(fp); fclose(fp); 从从fp指向的文件中读指向的文件中读取一个字符取一个字符【例例10-6】下面程序读取上例中产生下面程序读取上例中产生的的test.dat文件,并将读出结果显示在文件,并将读出结果显示在屏幕上屏幕上 10.3.1 字符读写

22、字符读写fputc()和和fgetc() 10.3 10.3 文件读写操作文件读写操作程序程序演示演示 Page 22 1. 格式化写入数据函数格式化写入数据函数fprintf( ) 功能功能按照指定的格式把数据写入文件中按照指定的格式把数据写入文件中 【例例10-7】 (1)fprintf(fp,”%d,%d”,10,20); /将将10和和20以整型数据写入以整型数据写入fp指向的文件中指向的文件中 (2)fprintf(fp,”%lf”,n); /将变量将变量n的值以双精度浮点型数据写入的值以双精度浮点型数据写入fp指向的文件中指向的文件中(3)fprintf(fp,”%s”,”How

23、are you.”); /将字符串将字符串”How are you.”写入写入fp指向文件指向文件中中 10.3.2 文件格式化读写文件格式化读写fprintf()和和fscanf()10.3 10.3 文件读写操作文件读写操作1.指向文指向文件的指针件的指针2.写入数写入数据的格式据的格式控制字符控制字符串串3.写入文写入文件的数据件的数据格式化写入数格式化写入数据函数据函数fprintf( )有三个参数有三个参数 Page 23 【例例10-8】把从键盘输入的把从键盘输入的10个整数写入个整数写入in.dat文件中保存。文件中保存。 #include #include #include #

24、include void main()void main() FILE FILE * *fp; int n; fp; int n; fp=fopen(“in.dat”, “w”); fp=fopen(“in.dat”, “w”); / /打开文件打开文件 if(fp= NULL) if(fp= NULL) printf( printf(打开文件失败打开文件失败.n); .n); exit(0); / exit(0); /退出退出 for(int i=0;i10;i+) for(int i=0;i10;i+) scanf(“%d”,&n); scanf(“%d”,&n); / /输入一个整型数据

25、输入一个整型数据 fprintf(fp,%4d,n); fprintf(fp,%4d,n); / /将输入的将输入的n n值写入文件值写入文件 fclose(fp); fclose(fp); 程序程序演示演示 10.3.2 文件格式化读写文件格式化读写fprintf()和和fscanf()10.3 10.3 文件读写操作文件读写操作Page 24 2. 格式化读取数据函数格式化读取数据函数fscanf( ) 功能功能从文件中按指定格式读取数据从文件中按指定格式读取数据 【例例10-9】 (1)fscanf(fp,”%d%d”,&a,&b); /从从 fp指向的文件中读取两个整数存入变量指向的文

26、件中读取两个整数存入变量a和和b的的 内存单元内存单元(2)fscanf(fp,”%lf”,&n); /从从 fp指向的文件中读取一个指向的文件中读取一个double类型数据存入变量类型数据存入变量n的的 内存单元内存单元(3)fscanf(fp,”%s”,str); /从从 fp指向的文件中读取一个字符串,存入指向的文件中读取一个字符串,存入str指向的内存指向的内存10.3.2 文件格式化读写文件格式化读写fprintf()和和fscanf()10.3 10.3 文件读写操作文件读写操作1.指向文指向文件的指针件的指针2.读取数读取数据的格式据的格式控制控制3.读取数读取数据的格式据的格式

27、控制控制格式化读取数格式化读取数据函数据函数fscanf( )有三个参数有三个参数Page 25 【例例10-10】从从【例例10-8】得到的得到的in.dat文件中读取文件中读取10个整数显示输出个整数显示输出#include #include void main() FILE *fp; int i,a10; fp=fopen(in.dat, r); /打开文件打开文件 if(fp= NULL) printf(打开文件失败打开文件失败.n); exit(0); /退出退出 for(i=0;i10;i+) /从文件中读取整型数据从文件中读取整型数据 fscanf(fp,%d,&ai); pri

28、ntf(读取的数据为:读取的数据为:n); for(i=0;i10;i+)printf(%3d,ai); /显示输出数据显示输出数据 fclose(fp);程序程序演示演示 10.3.2 文件格式化读写文件格式化读写fprintf()和和fscanf()10.3 10.3 文件读写操作文件读写操作Page 26 10.4 综合应用案例综合应用案例【例例10-12】1、键盘输入10个整数存放在数组a中,并将数组a中的数据“写”到“f1.txt”文件中2、从文件“f1.txt”中,“读”所有数据存放在数组b中,并将b中的内容和所有数据之和显示在屏幕上。10.4 10.4 综合应用案例综合应用案例Page 27 10.4 综合应用案例综合应用案例【例例10-13】将X.TXT文件中的300个DOUBLE型的数据,按从小到大的方法排序,并要求向显示器输出前1

温馨提示

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

评论

0/150

提交评论