C语言程序设计 教学课件 ppt 作者 徐秋红 第10章文件

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

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

1、第10章 文件,文件,重点介绍以下几个方面的内容: 介绍文件的基本概念; 介绍如何利用标准库函数打开文件、关闭文件、建立文件; 介绍利用标准库函数定位文件读写指针,以多种方式读写文件内容的方法; 介绍如何在文件操作的执行中对文件实施检测。,文件的基本概念,文件是程序设计中一个很重要的概念。所谓“文件”一般指存储在外部介质上数据的集合。数据流是以文件的形式存放在外部介质(如磁盘、磁带)上的。操作系统是以文件为单位对数据进行处理。如果想查找存储在外部介质上的某个或某些数据,必须先按文件名找到包含这些数据的文件,然后再从该文件中读取数据。要向外部介质上存储数据也必须先建立一个文件(以文件名标识),将

2、数据组织在此文件中,并以文件形式写到存储介质(磁盘)上。,文件的基本概念,根据数据的组织形式,文件可分为ASCII文件和二进制文件。 ASCII文件又称文本(text)文件,它的每一个字节存放一个ASCII代码,即每一个字节表示一个字符。 二进制文件是把内存中的数据按其存储形式,以二进制码形式形成文件,再存储到磁盘上。,有一个整数10000,它的二进制表示形式在内存中占2个字节;如果按ASCII码形式输出,则需要5个字节表示,而按二进制形式输出,则表示形式只占2个字节。,文件的基本概念,用ASCII码形式输出数值:每一位数据对应一个字符,一个字符用一个字节(ASCII码)代表,因而便于对字符进

3、行逐个处理,也便于输出字符,但一般占存储空间较多。 用二进制形式输出数值,可以节省外存空间和转换时间,但一个字节并不对应一个字符,不能直接输出字符形式。一般中间结果数据需要暂时保存在外存上以备再需要输入到内存时,常用二进制文件保存。,文件的基本概念,但无论是文本文件还是二进制文件,C都把数据看作是一连串字节,即C对文件的存取是以字节为单位的,输入输出的数据流仅受程序控制,所以我们说C文件就是字节流文件,简称为流式文件。 在C语言中对文件的处理方法有两种,一种是缓冲型文件系统:是指系统自动在内存中为每一个正在使用的文件开辟一个缓冲区,作为程序与磁盘文件间数据交流的中间媒介。即在读写文件时,数据先

4、送到缓冲区,再传给C程序或传到磁盘上。另一种是非缓冲型文件系统:是指系统不会自动设置缓冲区,而由程序为每个文件设定缓冲区。 Turbo C则使用的是缓冲型文件系统。,文件类型指针,每个被使用的文件都由系统在内存中自动开辟一个特殊区域,用来存放文件的有关信息(如文件的名字、文件状态及文件当前位置等),这些信息保存在一个结构体变量中的。该结构体类型是由系统定义的,取名为FILE, 在stdio.h文件中的FILE结构体类型的结构内容是:,文件类型指针,typedef struct short level; /*缓冲区“满”或“空”的程度*/ unsigned flags; /*文件状态标志*/ c

5、har fd; /*文件描述符*/ unsigned char hold; /*如无缓冲区不读取字符*/ short bsize; /*缓冲区的大小*/ unsigned char *buffer; /*数据缓冲区的位置*/ unsigned char *curp; /*指针,当前的指向*/ unsigned istemp; /*临时文件,指示器*/ short token; /*用于有效性检查*/ FILE ;,文件类型指针,可以用结构体FILE类型来定义若干个FILE类型的变量,以便存放若干个文件的信息。例如,可以定义以下FILE类型的数组。 FILE f5; 定义了一个结构体数组f,它有

6、5个元素,可以用来存放5个文件的信息。可以定义文件型指针变量。如: FILE *fp; fp 是一个指向FILE类型结构体的指针变量。可以使fp指向某一个文件的结构体变量,从而通过该结构体变量中的文件信息能够访问该文件。也就是说,通过文件指针变量能够找到与它相关的文件。,文件的操作,文件的打开与关闭 fopen(“文件名”,“文件打开模式”) 在正常情况下,fopen函数的主要功能是为需要打开的文件分配一个缓冲区,并返回该缓冲区的首地址,因此该地址就是该函数的返回值,它是一个指向FILE类型的指针。即应该将fopen函数的返回值赋给一个文件类型的指针变量,例如: FILE *fp; /* 定义

7、fp为文件类型的指针变量 */ fpfopen(“d:myfile.txt”, “r”);,fopen函数中的“文件打开模式”参数用来表明对文件的读写意图,文件的操作,文件的关闭(fclose函数) 对文件的处理操作完成后,要关闭文件。在C语言中,关闭文件函数fclose的一般调用形式如下: fclose(要关闭的文件的文件类型指针) 例如: fclose(fp); fp的值是在此文件被打开时所赋予的指针值。此函数的作用是使文件类型指针fp与相应的磁盘文件脱离关系。,文件的顺序读写,每次一行的读写(fputs函数和fgets函数) 此类读写操作可以一次处理一行数据,即实现整行文本的读写。 fp

8、uts函数 fputs函数的一般调用形式如下: fputs(str,fp) 此函数的功能是把以str为起始地址的字符串写到文件指针fp所指向的文件中。输出的字符串不包括串结束标志,也不会自动加换行符n,如果需要,必须手工添加。 若函数调用成功,则返回非负整数,否则返回EOF。,文件的顺序读写,fgets函数 fgets函数的一般调用形式如下: fgets(str,n,fp) 此函数的功能是从文件指针fp所指向的文件中读取n-1个字符,存入以str为起始地址的空间中,并在最后一个字符之后添加n表示结束。该函数读取的内容不会超过一个行结束标志n或者文件结束标志。n代表str为起始地址的存储空间的大

9、小。,文件的顺序读写,数据块的读写(fread函数和fwrite函数) 此类操作每次都需要指定读写数据的长度,通常用于二进制文件的读写。 fread函数的一般调用形式如下: fread(buffer, size, count, fp) fwrite函数的一般调用形式如下: fwrite(buffer, size, count, fp),【例9】 文件复制。新建一个名为f:bk_ct10_8_cp.dat的二进制文件,将二进制文件f:bk_ctest10_8.dat的内容全部复制给新建的二进制文件。 #include “stdio.h“ struct health /* 定义结构体 */ cha

10、r name20; int id; float height; float weight; ; main() FILE *infp, *outfp; struct health pers; char *outmyfile=“f:bk_ctest10_8.dat“; char *inmyfile=“f:bk_ct10_8_cp.dat“; clrscr();,if(outfp=fopen(outmyfile,“rb“)=NULL) printf(“%s Open fail. n“,outmyfile); exit(0); if(infp=fopen(inmyfile,“wb“)=NULL) pr

11、intf(“%s Open fail. n“,inmyfile); exit(0); while(fread( ,文件的定位和文件的随机读写,改变文件读写顺序,将文件的位置指针强制定位到要读写的区域位置后直接读写,这就称为随机读写。 rewind函数 此函数的功能是将文件的读写位置指针移动到文件的开头。此函数的调用形式是: rewind(fp) fp指针是指向了一个已打开的文件。此函数没有返回值。该函数在使文件位置指针反绕回文件头的同时,也将feof函数的值置为了0(假)。,文件的定位和文件的随机读写,fseek函数 fseek函数的功能是将文件的读写指针移动到指定的位置来实现随机读写操作。此

12、函数的一般调用形式如下: fseek(文件指针,偏移量,起始位置) “起始位置”是指文件位置指针移动时的基准点,它可以有三种选择:文件开始、当前位置、文件末尾。,文件的定位和文件的随机读写,ftell函数 测定位置指针当前的位置,就要使用ftell函数。该函数的的一般调用形式如下: long n; n=ftell(fp); ftell函数的功能是返回文件的读写指针当前的位置,即文件的位置指针相对于文件头的偏移量,单位是字节数。如果此字节数需要存储在一个变量中,则该变量类型应该定义为长整型。ftell函数执行出错时返回值为1L。,检测出错的方法,ferror函数 ferror函数的一般调用形式如下: ferror(fp) 如果ferror函数的返回值是0(假),表示对数据文件的操作没有出错。如果返回一个非零值,就表示有错。,检测出错的方法,clearerr函数 一般调用形式是: clearerr(fp) 当文件的输入输出操作出现错误后,ferror函数将返回一个非零值,此时可以调用clearerr函数将ferror函数的值变为0。也就是说文件的输入输出操作出现的错误信息也可用clearerr()函数清除。,

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

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

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