C语言课件第10章.ppt
《C语言课件第10章.ppt》由会员分享,可在线阅读,更多相关《C语言课件第10章.ppt(38页珍藏版)》请在三一办公上搜索。
1、文 件,10.1 C文件的有关概念10.2 文件的打开与关闭10.3 文件的顺序读写10.4 文件的随机读写10.5 文件读写出错的检测本章小结,第10章,C文件的有关概念,10.1,文件是指存储在外存储器上的数据的集合。,教学进程,10.1.1 什么是文件,操作系统是以文件为单位对数据进行管理的。输入输出是数据传送的过程,数据如流水一样从一处流向另一处,因此常将输入输出形象地称为流(stream),即输入输出流。语言把文件看作是一个字符(字节)的序列,即文件是由一个一个字符(字节)的数据顺序组成。一个输入输出流就是一个字节流或二进制流。,C文件的有关概念,10.1,每个文件都有一个标识,称为
2、文件名。操作系统就是根据文件名对各种文件进行存取,并进行处理。文件标识包括三部分:(1)文件路径:(2)主文件名;(3)文件后缀。文件路径表示文件在外部存储设备中的位置。如:d:cc temp file1.dat 文件路径 主文件名 文件后缀,教学进程,10.1.2 文件名,文件的有关概念,主文件名遵循标识符的命名规则。后缀用来表示文件的性质,一般不超过3个字母。如:.doc(Word 文件),.txt(文本文件),.dat(数据文件)。,教学进程,10.1.3 文件的分类,文件的有关概念,根据数据的组织形式,数据文件可分为ASCII文件和二进制文件。,例:整数10000在内存中的存储形式以及
3、分别按ASCII码形式和二进制形式输出如下图所示:,文件的有关概念,教学进程,10.1.4 文件缓冲区,ANSI C标准采用“缓冲文件系统”处理文件,是指系统自动地为正在被使用的文件在内存中开辟一个缓冲区。当需要向外存储器中的文件输出数据时,必须先将数据送到为该文件开辟的缓冲区中,当缓冲区满以后才一起送到外存储器中。当需要从外存储器中的文件读入数据进行处理时,也首先一次从外存储器将一批数据读入缓冲区(将缓冲区充满),然后再从缓冲区中将数据逐个读出进行处理。由此可以看出,在缓冲文件系统中,对文件的输入输出是通过为该文件开辟的缓冲区进行的,对文件中数据的处理也是在该缓冲区中进行的。,10.1.5
4、文件指针,在C语言的缓冲文件系统中,用文件类型指针来标识文件。,教学进程,定义文件类型指针的一般形式为 FILE*指针变量名;其中指针变量名用于指向一个文件,实际上是用于存放文件缓冲区的首地址。,在缓冲文件系统中,每个被使用的文件都要在内存中开辟一FILE类型的区,存放文件的有关信息(文件名、文件状态、文件当前位置等)。如果有个文件,一般应设个指针变量,使它们分别指向个文件,以实现对文件的访问。如可以定义FILE类型的数组:FILEf5;即定义了一个有5个元素的结构体数组f,可用来存放5个文件的信息.,文件的有关概念,10.1.6 文件的位置指针,位置指针用来指示当前的读写位置。,教学进程,一
5、般情况下,在对字符文件进行顺序读写时,文件的位置指针指向文件开头,这时如果对文件进行读的操作,就读第一个字符,然后文件的位置指针顺序向后移一个位置,在下一次执行读的操作时,就将指针指向的第二个字符读入。依此类推,直到遇文件尾。,文件的有关概念,文件头 读写当前位置 文件尾,有时希望在一个文件的原有数据之后再添加新的数据,应该把文件位置指针移到文件尾,然后再接着写入新的数据,这就是文件的追加。C语言允许根据读写的需要,人为地向前、向后、往文件头或文件尾移动文件指针的位置,然后进行读写,这不是顺序读写而是随机读写。,教学进程,一般来说,对文件有以下三个方面的操作:1)打开文件 在计算机内存中开辟一
6、个缓冲区,用于存放被打开文件 的有关信息。2)文件处理 包括在缓冲区中读写数据以及定位等操作。3)关闭文件 将缓冲区中的内容写回到外存(磁盘),并释放缓冲区。,文件的有关概念,文件的打开与关闭,10.2,文件的打开,教学进程,10.2.1 文件的打开,FILE*fp(或其他指针变量名);fp=fopen(文件名,文件使用方式);,fopen()函数,文件名,文件使用方式,要打开的文件的名字,以何种方式打开文件:是读还是写,均是字符串,功能 为需要打开的文件分配一个缓冲区,并返回该缓冲区的首地址给文件型指针变量fp。以后对文件的访问通过指针变量fp进行。,文件的打开,r 只读 为输入打开一个文件
7、。若指定的文件不存在,则返回 空指针值NULL。w 只写 为输出建立一个新文件。若指定的文件已存在,则其 中原有内容被删去;否则创建一个新文件。a 追加写 向文件尾增加数据。若指定的文件不存在,则创建 一个新文件。r+读写 为读写打开一个文件。若指定的文件不存在,则返 回空指针值NULL。w+读写 为读写打开一个新文件。若指定的文件已存在,则 其中内容被删去;否则创建一个新文件。a+读与追加写为读与向文件尾增加数据打开一个文件。若指定的文件不存在,则创建一个新文件。如果在后面附加“b”,则表示打开的是二进制文件,否则默认为打开的是文本文件。,教学进程,文件的打开,教学进程,在打开一个文件时有时
8、会出错。,在一般的C程序中,常采用以下方式来打开文件:FILE*fp;if(fp=fopen(文件名,文件使用方式)=NULL)printf(cannot open this file!n);exit(0);/*终止调用过程*/,在以上述方式打开文件时,如果出现“打开”错误,fopen()函数返回空指针值,程序就显示以下信息:cannot open this file!并退出当前的调用过程。,教学进程,fclose(fp);,主要功能是将由fp指向的缓冲区中的数据存放到外存文件中,然后释放该缓冲区。当文件被关闭后,如果想再对该文件进行操作,则必须再打开它。虽然C语言允许打开多个文件,但打开的文
9、件个数是有限的。如果不关闭已经处理完的文件,当打开的文件个数很多时,会影响对其它文件的打开操作。因此,建议当一个文件使用完后应立即关闭它。函数的返回值 当顺利关闭后,返回值为0,否则返回EOF(-1).,文件的打开与关闭,10.2,10.2.2 文件的关闭,fclose()函数,教学进程,文件的顺序读写,10.3,10.3.1 向文件读写一个字符,1.用fputc函数向文件写入一个字符 调用形式:fputc(ch,fp);函数功能:将字符(ch的值)输出到fp所指向的文件中去。返 回 值:如果输出成功,则返回值就是输出的字符;如果输出失败,则返回一个EOF。,教学进程,其中fp为文件类型的指针
10、,指向已打开的文件。主要适用于文本文件的读写。,2.用fgetc函数从文件读入一个字符调用形式:ch=fgetc(fp);函数功能:从以读或读写方式打开的文件中读一个字符到变量ch中。返 回 值:如果在执行fgetc函数读字符时遇到文件结束符,函数返回一个文件结束标志EOF(即-1)。,字符读写函数,教学进程,【例10.1】从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个“”为止。#include#include void main(void)FILE*fp;char ch,filename10;scanf(%s,filename);if(fp=fopen(filename,w)=NU
11、LL)printf(cannot open filen);exit(0);/*终止程序*/,字符读写函数,教学进程,【例】从文件a.dat中顺序读入字符并在屏幕上显示输出。#include stdio.h main()FILE*fin;char c;if(fin=fopen(a.dat,r+)=NULL)printf(cannot open this file!n);exit(0);c=fgetc(fin);/*从文件读取一个字符*/,教学进程,判文件结束函数feof(),在C语言中,只有文本文件才是以EOF作为文件结束标志的,而二进制文件不是以EOF作为文件结束标志的。为此,C语言提供了一个
12、feof()函数,专门用来判断文件是否结束。,判文件结束函数的一般形式为 feof(fp)其中fp指向已打开的文件。,feof()函数既可以用来判断二进制文件,也可以用来判断文本文件。,在读fp指向的文件时判断是否遇到文件结束。如果遇到文件结束,则函数feof(fp)的返回值为1;否则返回值为0。,功能,教学进程,#include#include main()FILE*in,*out;char ch,infile10,outfile10;printf(Enter the infile name:n);scanf(%s,infile);printf(Enter the outfile name:
13、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)fputc(fgetc(in),out);fclose(in);fclose(out);,【例10.2】将一个磁盘文件中的信息复制到另一个磁盘文件中。分析:应设两个文件指针,一个用来读,一个用来写。,字符读写,教学进程,读字符串函数的一般形式为 fgets(str,n,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课件 10
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5384462.html