C语言程序设计 教学课件 ppt 作者 冉崇善 等 第8章 文件

上传人:E**** 文档编号:89422707 上传时间:2019-05-25 格式:PPT 页数:65 大小:234.50KB
返回 下载 相关 举报
C语言程序设计 教学课件 ppt 作者 冉崇善 等 第8章 文件_第1页
第1页 / 共65页
C语言程序设计 教学课件 ppt 作者 冉崇善 等 第8章 文件_第2页
第2页 / 共65页
C语言程序设计 教学课件 ppt 作者 冉崇善 等 第8章 文件_第3页
第3页 / 共65页
C语言程序设计 教学课件 ppt 作者 冉崇善 等 第8章 文件_第4页
第4页 / 共65页
C语言程序设计 教学课件 ppt 作者 冉崇善 等 第8章 文件_第5页
第5页 / 共65页
点击查看更多>>
资源描述

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

1、第8章 文 件,C语言程序设计,主编:冉崇善,8.1 文件及其分类 8.2 缓冲文件系统 8.3 非缓冲文件系统 8.4 文件系统应用举例,第8章 文 件,C语言程序设计,第8章 文件,8.1 文件及其分类,在程序运行时,程序本身和数据一般都存放在内存中。当程序运行结束后,存放在内存中的数据被释放。 如需要长期保存程序、以及原始数据,运行结果,就必须以文件形式存储到外部存储介质(如磁盘等)上的数据的有序集合,在使用时才调入内存中来。 文件名一般结构为: 主文件名.扩展名 文件命名规则,遵循操作系统的约定。 例如:源程序文件、目标文件、可执行文件、库文件 (头文件)等。,C语言程序设计,第8章

2、文件,8.1.1 ANSI C 的缓冲文件系统 (1)缓冲文件系统 缓冲文件系统是指,系统自动地在内存区为每个正在使用的文件开辟一个缓冲区。 从内存向磁盘输出数据时,必须首先输出到缓冲区中。待缓冲区装满后,再一起输出到磁盘文件中。 从磁盘文件向内存读入数据时,则正好相反:首先将一批数据读入到缓冲区中,再从缓冲区中将数据逐个送到程序数据区。 (2)非缓冲文件系统是指系统不自动开辟确定大小的缓冲区,而由程序为每个文件设定缓冲区。,C语言程序设计,第8章 文件,C的“缓冲文件系统”自动地在内存中开辟一个文件缓冲区, 在对文件进行处理时, 通过文件缓冲区进行输入与输出。,程序 数据区,输出 缓冲区,输

3、入 缓冲区,C语言程序设计,第8章 文件,8.1.2 流式文件 C语言将文件看作是一个一个字符(字节)序列组成的,分为文本(ASCII码)文件和二进制文件两种,将这样的文件称为流式文件。 1.文本文件 ASCII码文件的每1个字节存储1个字符,因而便于对字符进行逐个处理。但一般占用存储空间较多,而且要花费转换时间(二进制与ASCII码之间的转换)。 2.二进制文件 二进制文件是把内存中的数据,原样输出到磁盘文件中。可以节省存储空间和转换时间,但1个字节并不对应1个字符,不能直接输出字符形式。,C语言程序设计,第8章 文件,8.1.3 文件分类与读写概念 1.文件分类 (1)根据文件的性质(内容

4、),将文件分为程序文件和数据文件。 (2)根据文件的组织形式,可分为顺序存取文件和随机存取文件。 (3)从用户的角度看,文件可以分为普通文件和设备文件两种。 (4)根据文件的存储形式(编码方式),文件分为ASCII码文件和二进制码文件,ASCII文件也称为文本文件。 2读/写文件 读文件是将磁盘文件中的数据传送到计算机内存。 写文件是从计算机内存向磁盘文件中传送数据的操作。,C语言程序设计,第8章 文件,1文件类型指针 在C系统的头文件stdio.h中定义了一个名叫FILE的结构体类型。 系统给每个打开的文件都在内存中开辟一个区域,用于存放文件的有关信息(如文件名、文件位置等)。这些信息保存在

5、一个结构类型变量中,该结构类型由系统定义、取名为FILE。 注意:结构类型名“FILE”必须大写。 “文件指针”是缓冲文件系统中的一个重要概念。,C语言程序设计,第8章 文件,8.2 缓冲文件系统,8.2.1 文件的打开和关闭 对文件进行操作之前,必须先打开该文件;使用结束后,应立即关闭,以免数据丢失。,typedef struct short level; /* 缓冲区饱和程度 */ unsigned flage; /* 文件状态标志 */ char fd; /* 文件号 */ unsigned char hold; /* 无缓冲区取消字符输入 */ short bsize; /* 缓冲区大

6、小缺省值512 */ unsigned char *buffer; /* 缓冲区指针*/ unsigned char *curp; /* 当前活动指针 */ unsigned istemp; /* 草稿文件标识 */ short token; /* 作正确性检验 */ FILE ;,C语言程序设计,第8章 文件,在缓冲文件系统中可以进行文件的打开、关闭、读、写、 定位等操作。要对文件进行相应的操作,必先定义一个指向文件的指针,这个指针称为文件指针。 2文件指针定义 定义文件指针的形式: FILE *指针变量标识符; 其中FILE是由系统定义的一个结构类型, 该结构体类型中含有文件名、文件状态和

7、文件当前位置等信息。 例如,FILE *fp; 表示fp是指向FILE(文件)的指针变量,通过fp可找到它指向的文件的信息。,C语言程序设计,第8章 文件,3.文件的打开 1)用法: FILE *fopen(“文件名“,“操作方式“); 等价于: FILE *fp; fp=fopen( “ 文件名”,“操作方式”); 2)功能:返回一个指向指定文件的指针。 3)函数原型:stdio.h 。 注:对文件操作的库函数,函数原型均在头文件stdio.h中。后续函数不再赘述。,C语言程序设计,第8章 文件,4)文件操作说明 (1)“文件名”是指要打开(或创建)的文件名。如果使用字符数组(或字符指针),

8、则不使用双引号。 用 fp 指向打开的文件后, 就可以用它来访问该文件。 例如, FILE *fp; fpfopen(“data.99“,“r“); (2)如果不能实现打开指定文件的操作,则fopen()函数返回一个空指针NULL (其值在头文件stdio.h中被定义为)。为增强程序的可靠性,常用下面的方法打开一个文件: if(fp=fopen(“文件名“,“操作方式“)=NULL) printf(“can not open this filen“); exit(0); ,C语言程序设计,第8章 文件,(3)对文件操作的方式(模式) r 以只读方式打开一个文本文件(该文件已存在) 位置指针指向

9、文件头,从此处读数据 w 以只写方式打开一个文本文件,若该文件不存 在,系统自动建立它,否则,刷新此文件,位 置指针指向文件头,从此处写数据。 a 以追加方式打开一个文本文件,指针指向文件尾 r+ 以读/写方式打开一个文本文件 打开文件时,读写位置指针指向文件头,以覆 盖方式写文件 w+ 以读/写方式建立一个新的文本文件,C语言程序设计,第8章 文件,(3)对文件操作的方式(模式) a+ 以读/写方式打开一个文本文件 打开文件时,读从文件头开始;写从文件尾部 追加。 rb 以只读方式打开一个二进制文件 wb 以只写方式打开一个二进制文件 ab 以追加方式打开一个二进制文件 rb+ 以读/写方式

10、打开一个二进制文件 wb+ 以读/写方式打开一个新的二进制文件 ab+ 以读/写方式打开一个二进制文件,C语言程序设计,第8章 文件,(4)有些编译系统,可能并不完全提供上述对文件的操作方式,或采用的表示符号不同,请注意所使用系统的规定。 (5)使用文本文件向计算机系统输入数据时,系统自动将回车换行符转换成一个换行符; 在输出时,将换行符转换成回车和换行两个字符。 (6)使用二进制文件时,内存中的数据形式与数据文件中的形式完全一样,就不再进行转换。,C语言程序设计,第8章 文件,(7)在程序开始运行时,系统自动打开三个标准文件,并分别定义了文件指针: 标准输入文件stdin:指向终端输入(一般

11、为键盘)。如果程序中指定要从stdin所指的文件输入数据,就是从终端键盘上输入数据。 标准输出文件stdout:指向终端输出(一般为显示器)。 标准错误文件stderr:指向终端标准错误输出(一般为显示器)。,C语言程序设计,第8章 文件,4. 文件的关闭 对一个文件操作完成后,要将该文件关闭,以避免文件的数据丢失等错误。 C语言中关闭一个文件通过系统函数fclose实现。 (1)用法: int fclose(FILE *文件指针); (2)功能:关闭“文件指针”所指向的文件。如果正常关闭了文件,则函数返回值为;否则,返回值为非。 例如,fclose(fp); 关闭fp所指向的文件。,C语言程

12、序设计,第8章 文件,例8.1 以“w”方式打开文件(文本文件) #include main() FILE *fp; fp=fopen(“mydata1.txt“,“w“); if (fp=NULL) printf(“file open error!n“); exit(0); else printf(“file open OK!n“); fclose(fp); ,以“w”方式打开的文本文件可以是不存在的新文件,或已存在文件,新文件就建立它,老文件刷新后重建,C语言程序设计,第8章 文件,8.2.2 文件的读写,文件被打开后可以对文件进行操作,文件的读写操作是最常用的文件操作。C语言中文件的读写

13、没有特定的输入输出,它是通过函数来实现的。 文件读与写的操作: 1. 读写文件中的一个字符 2. 读写一个字符串 3. 读写一个数据块 4. 对文件进行格式化读写,C语言程序设计,第8章 文件,1. 字符读写函数fgetc和fputc (1) fgetc()函数从文件中读入一个字符 用法:int fgetc(文件指针); 功能:从“文件指针”所指向的文件中,读入一个字符,同时将读写位置指针向前移动1个字节(即指向下一个字符)。该函数无出错返回值。 例如, fgetc (fp) ; 从文件fp中读一个字符,同时将fp的读写位置指针向前移动到下一个字符。 关于fgetc函数的使用有以下几点说明:

14、在fgetc函数调用中,读取的文件必须是以读或读写方式打开的。,C语言程序设计,第8章 文件, 有一个位置指针。用来指向文件的当前读写字节。在文件打开时,该指针总是指向文件的第一个字节。使用fgetc 函数后,该位置指针将向后移动一个字节。可连续多次使用fgetc函数,读取多个字符。在文件内部 应注意文件指针和文件内部的位置指针不是一回事。文件指针是指向整个文件的,须在程序中定义说明,只要不重新赋值,文件指针的值是不变的。 在对文件进行读操作时,为了避免文件已结束还在进行读操作而导致错误,可以用系统函数feof来判定文件是否结束,当该函数的值为1(真)时表示文件结束,为0(假)时表示文件还没有

15、结束。,C语言程序设计,第8章 文件,例8.2 读入文件myq1.c,在屏幕上输出。 #include main() FILE *p; char c; p= fopen(“myq1.c“,“r“); if(fp=NULL) printf(“Cannot open file strike any key exit!“); exit(0); c=fgetc(p); while (!feof(p) putchar(c); c=fgetc(p); fclose(p); ,C语言程序设计,第8章 文件,例 8.3 文件读取 #include #include main() FILE *fp; char ch; *filename=NULL; printf(“please imput filename: “); gets(filename); fp=fopen(filename,“r“); if (fp=NULL) printf(“errorn“); else while (ch=fgetc(fp)!=EOF) putchar(ch); fclose(fp); ,C语言程序设计,第8章 文件, 关于符号常量EOF 在对ASCII码文件执行读入操作时,如果遇到文件尾,则读操作函数返回一个文件结束标志EOF(其值在头文件stdio.h中被定义为-1)。 在对二进制文件执行读

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

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

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