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