C语言程序设计实用教程 教学课件 ppt 作者 周虹 课件 第12章 文件

上传人:E**** 文档编号:89190643 上传时间:2019-05-21 格式:PPT 页数:77 大小:883.50KB
返回 下载 相关 举报
C语言程序设计实用教程 教学课件 ppt 作者 周虹 课件 第12章 文件_第1页
第1页 / 共77页
C语言程序设计实用教程 教学课件 ppt 作者 周虹 课件 第12章 文件_第2页
第2页 / 共77页
C语言程序设计实用教程 教学课件 ppt 作者 周虹 课件 第12章 文件_第3页
第3页 / 共77页
C语言程序设计实用教程 教学课件 ppt 作者 周虹 课件 第12章 文件_第4页
第4页 / 共77页
C语言程序设计实用教程 教学课件 ppt 作者 周虹 课件 第12章 文件_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《C语言程序设计实用教程 教学课件 ppt 作者 周虹 课件 第12章 文件》由会员分享,可在线阅读,更多相关《C语言程序设计实用教程 教学课件 ppt 作者 周虹 课件 第12章 文件(77页珍藏版)》请在金锄头文库上搜索。

1、佳木斯大学,1,C语言程序设计实用教程,第12章 文 件,佳木斯大学,2,本章学习目标,了解C语言文件的概念 掌握C语言文件操作函数及读写函数 掌握C语言文件的建立和使用,佳木斯大学,3,【教学目的】,1、了解C语言文件的概念。 2、掌握C语言文件操作函数及读/写函数。 3、掌握C语言文件的建立和使用。,佳木斯大学,4,【主要内容】,1、文件的概念 2、C语言文件操作函数及读/写函数。 3、C语言文件的建立和使用。,佳木斯大学,5,【重点与难点】,1、C语言文件操作函数及读/写函数。 2、C语言文件的建立和使用。,佳木斯大学,6,【教学方法】,采用理论讲解教学方法,佳木斯大学,7,【教学内容】

2、,带着问题学习: (1)文件建立的步骤? (2)如何利用文件?,佳木斯大学,8,12-1 文件的概念,文件(file)是程序设计中一个重要的概念。文件一般指存储在外部介质上的一组相关数据的集合。一批数据是以文件的形式存放在外部介质(如磁盘)上的。操作系统是以文件为单位对数据进行管理的,也就是说,如果想查找存在外部介质上的数据,必须先按文件名找到所指定的文件,然后再从该文件中读取数据。要向外部介质上存储数据也必须先建立一个文件(以文件名标识),才能向它输出数据。,佳木斯大学,9,12-1 文件的概念,我们在编程时所用到的输入和输出,都是以终端为对象的,即从终端键盘输入数据,运行结果输出到终端上。

3、从操作系统的角度看,每一个与主机相联的输入输出设备都被看作是一个文件。例如,终端键盘是输入文件,显示屏和打印机是输出文件。 在程序运行时,常常需要将一些数据(运行的最终结果或中间数据)输出到磁盘上存放起来,以后需要时再从磁盘中输入到计算机内存,这就要用到磁盘文件。,佳木斯大学,10,12-1 文件的概念,一个C文件是一个字节流或二进制流。在C语言中对文件的存取是以字符(字节)为单位的。输入输出的数据流的开始和结束仅受程序控制,而不受物理符号(如回车换行符)控制。也就是说,在输出时不会自动增加回车换行符作为记录结束的标志,输入时内存中存储形式不以回车换行符作为记录的间隔,我们把这种文件称为流式文

4、件。C语言允许对文件存取一个字符,这就增加了处理的灵活性。,佳木斯大学,11,12-1 文件的概念,C语言对文件的处理有两种方法:缓冲文件系统和非缓冲文件系统。在缓冲文件系统中,在对文件进行读写之前首先在内存区为每一个正在使用的文件名开辟一个缓冲区。从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘去。如果从磁盘向内存读入数据,则一次从磁盘文件将一批数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区给程序变量。缓冲区的大小由各个具体的C版本确定,一般为512字节。,佳木斯大学,12,12-1 文件的概念,本章只介绍ANSI C规定的文件系统以及对

5、它的读写。缓冲文件系统中,关键的概念是“文件指针”。每个被使用的文件都在内存中开辟一个区,用来存放文件的有关信息(如文件的名字、文件状态及文件当前位置等)。这些信息是保存在一个结构体变量中的,该结构体类型是由系统定义的,取名为FILE。,佳木斯大学,13,12-1 文件的概念,Turbo C在stdio.h文件中有以下的文件类型声明: typedef struct short level; /*缓冲区“满”或“空”的程度*/ unsigned flags; /*文件状态标志*/ char fd; /*文件描述符*/ unsigned char hold; /*如无缓冲区不读取字符*/ shor

6、t bsize; /*缓冲区的大小*/ unsigned char *buffer; /*数据缓冲区的位置*/ unsigned char *curp; /*指针,当前的指向*/ unsigned istemp; /*临时文件,指示器*/ short token; /*用于有效性检查*/ FILE;,佳木斯大学,14,12-1 文件的概念,有了结构体FILE类型之后,可以用它来定义若干个FILE类型的变量,以便存放若干个文件的信息。通常定义成FILE类型的指针称为文件指针。在使用文件时,先定义一个文件指针,,佳木斯大学,15,12-1 文件的概念,如:FILE *fp; fp是一个指向FILE

7、类型结构体的指针变量。可以使fp指向某一个文件的结构体变量,从而通过该结构体变量中的文件信息能够访问该文件。也就是说,通过文件指针变量能够找到与它相关的文件。如果有n个文件,一般应设n个文件指针变量,使它们分别指向n个文件,以实现对文件的访问。,佳木斯大学,16,12-2 文件操作函数,12-2-1 文件的打开(fopen函数) ANSI C规定了标准输入输出函数库,用fopen()函数来实现打开文件。fopen函数的调用方式通常为: FILE *fp; fp=fopen(“文件名“,“使用文件方式“);,佳木斯大学,17,12-2 文件操作函数,例如: fp=fopen(“a1.dat“,“

8、r“); 它表示要打开名字为a1.dat 的文件,使用文件方式为“读入”(r代表read,即读入),fopen函数带回指向al.dat文件的指针并赋给fp,这样fp就和文件al.dat相联系了,或者说,fp指向a1文件。,佳木斯大学,18,12-2 文件操作函数,可以看出,在打开一个文件时,通知给编译系统以下3个信息: 需要打开的文件名。 使用文件的方式(“读”还是“写”等)。 让哪一个指针变量指向被打开的文件,即建立起文件指针和外部存储文件之间的联系。,佳木斯大学,19,12-2 文件操作函数,佳木斯大学,20,12-2 文件操作函数,(1)用“r“方式打开的文件只能用于向计算机输入而不能用

9、作向该文件输出数据,而且该文件应该已经存在,不能用“r“方式打开一个并不存在的文件(即输入文件),否则出错。,佳木斯大学,21,12-2 文件操作函数,(2)用“w“方式打开的文件只能用于向该文件写数据(即输出文件),而不能用来向计算机输入。如果原来不存在该文件,则在打开时新建立一个以指定的名字命名的文件。如果原来已存在一个以该文件名命名的文件,则在打开时将该文件删去,然后重新建立一个新文件。,佳木斯大学,22,12-2 文件操作函数,(3)如果希望向文件末尾添加新的数据(不希望删除原有数据),则应该用“a“方式打开。但此时该文件必须已存在,否则将得到出错信息。打开时,位置指针移到文件末尾。,

10、佳木斯大学,23,12-2 文件操作函数,(4)用“r+“、“w+“、“a+“方式打开的文件既可以用来输入数据,也可以用来输出数据。用“r+“方式时该文件应该已经存在,以便能向计算机输入数据。用“w+“方式则新建立一个文件,先向此文件写数据,然后可以读此文件中的数据。用“a+“方式打开的文件,原来的文件不被删去,位置指针移到文件末尾,可以添加,也可以读。,佳木斯大学,24,12-2 文件操作函数,(5)如果不能实现“打开”的任务,fopen函数将会带回一个出错信息。出错的原因可能是用“r“方式打开一个并不存在的文件;磁盘出故障;磁盘已满无法建立新文件等。,佳木斯大学,25,12-2 文件操作函

11、数,(6)用以上方式可以打开文本文件或二进制文件,这是ANSI C的规定,用同一种缓冲文件系统来处理文本文件和二进制文件。但目前使用的有些C编译系统可能不完全提供所有这些功能(例如有的只能用“r“、“w“、“a“方式)。,佳木斯大学,26,12-2 文件操作函数,(7)在向计算机输入文本文件时,将回车换行符转换为一个换行符,在输出时把换行符转换成为回车和换行两个字符。在用二进制文件时,不进行这种转换,在内存中的数据形式与输出到外部文件中的数据形式完全一致,一一对应。,佳木斯大学,27,12-2 文件操作函数,(8)在程序开始运行时,系统自动打开3个标准文件:标准输入、标准输出、标准出错输出。通

12、常这3个文件都与终端相联系,因此以前我们所用到的从终端输入或输出都不需要打开终端文件,系统自动定义了3个文件指针stdin、stdout和stderr,分别指向终端输入、终端输出和标准出错输出(也从终端输出)。如果程序中指定要从stdin所指的文件输入数据,就是指从终端键盘输入数据。,佳木斯大学,28,12-2 文件操作函数,12-2-2 文件的关闭(fclose函数) 在使用完一个文件后应该关闭它,以防止它再被误用。“关闭”就是使文件指针变量不指向该文件,此后不能再通过该指针对原来与其相联系的文件进行读写操作。除非再次打开,使该指针变量重新指向该文件。,佳木斯大学,29,12-2 文件操作函

13、数,12-2-2 文件的关闭(fclose函数) 用fclose函数关闭文件。fclose函数调用的一般形式为: fclose(文件指针); 例如: fclose(fp);,佳木斯大学,30,12-2 文件操作函数,12-2-2 文件的关闭(fclose函数) fclose函数也带回一个值,当顺利地执行了关闭操作,则返回值为0;否则返回EOF。EOF是在stdio.h文件中定义的符号常量,值为1。,佳木斯大学,31,12-3 常用的读写函数,12-3-1 读写字符函数 1写字符函数 (fputc) 把一个字符写到磁盘文件上去。其一般调用形式为: fputc(ch,fp);,佳木斯大学,32,1

14、2.3 文件检测函数,1文件结束检测函数feof() 一般调用形式为: feof(文件指针) 此函数用来判断文件是否结束,如果文件结束,返回值为1;否则为0。,佳木斯大学,33,12-3 文件检测函数,2 、 ftell函数 ftell函数的作用是得到流式文件中的当前位置,用相对于文件开头的位移量来表示。由于文件中的位置指针经常移动,人们往往不容易知道其当前位置。用ftell函数可以得到当前位置。如果ftell函数返回值为1L,表示出错。,佳木斯大学,34,12-3 文件检测函数,2、 ftell函数 例如: k=ftell(fp); if(k=-1L)printf(“errorn“); 变量

15、k存放当前位置,如调用函数出错(如不存在此文件),则输出“error“。,佳木斯大学,35,12-3 文件检测函数,3、ferror函数 C标准提供一些函数用来检查输入输出函数调用中的错误。在调用各种输入输出函数(如putc、getc、fread、fwrite等)时,如果出现错误,除了函数返回值有所反映外,还可以用ferror函数检查。它的一般调用形式为 ferror(fp);,佳木斯大学,36,12-3文件检测函数,3、ferror函数 如果ferror返回值为0(假),表示未出错。如果返回一个非零值,表示出错。应该注意,对同一个文件每一次调用输入输出函数,均产生一个新的ferror函数值,

16、因此,应当在调用一个输入输出函数后立即检查ferror函数的值,否则信息会丢失。 在执行fopen函数时,ferror函数的初始值自动置为0。,佳木斯大学,37,12-3文件检测函数,4、clearerr函数 它的作用是使文件错误标志和文件结束标志置为0。假设在调用一个输入输出函数时出现错误,ferror函数值为一个非零值。在调用clearerr(fp)后,ferror(fp)的值变成0。只要出现错误标志,就一直保留,直到对同一文件调用clearerr函数或rewind函数,或任何其他一个输入输出函数。,佳木斯大学,38,12-4 常用的读写函数,12-4-1 读写字符函数 其中ch是要输出的字符,它可以是一个字符常量,也可以是一个字符变量。fp是文件指针变量。fputc(ch,fp)函数的作用是将字符(ch的值)输出到fp所指向的文件中去。,佳木斯大学,39,12-4 常用的读写函数,12-4-1 读写字

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号