第11章 文件.ppt
《第11章 文件.ppt》由会员分享,可在线阅读,更多相关《第11章 文件.ppt(30页珍藏版)》请在麦多课文档分享上搜索。
1、第11章 文件,11.1 C文件概述,文件与文件名,文件是指存放在外部存储介质上的数据集合。 为标识一个文件,每个文件都必须有一个文件名,其一般结构为:主文件名.扩展名,根据文件的存储形式,可分为ASCII码文件和二进制文件,读文件与写文件读文件是将磁盘文件中的数据传送到计算机内存的操作。写文件是从计算机内存向磁盘文件中传送数据的操作。,构成文件的基本单元与流式文件 语言将文件看作是由一个一个的字符(ASCII码文件)或字节(二进制文件)组成的。这种文件称为流式文件。,ANSI C的缓冲文件系统缓冲文件系统是指,系统自动地在内存区为每个正在使用的文件开辟一个缓冲区。写文件时,必须首先输出到缓冲
2、区中。待缓冲区装满后,再一起输出到磁盘文件中。读文件时,则正好相反:首先将一批数据读入到缓冲区中,再从缓冲区中将数据逐个送到程序数据区。,11.2 文件的类型及其文件的指针,每个被使用的文件都在内存中开辟一个区,用来存放文件的有关信息(文件名、文件状态、文件的当前位置等),这些信息是保存在一个结构体变量中的。,typedef struct short level; /* 缓冲区“满”或“空”的程度 */unsigned flags; /* 文件状态标志*/char fd; /* 文件描述符 */unsigned char hold; /* 如无缓冲区不读取字符 */short bsize; /
3、* 缓冲区大小*/unsigned char *buffer; /* 缓冲区的位置 */unsigned char *curp; /* 指针,当前的指向 */unsigned istemp; /* 临时文件,指示器 */short token; /* 用于有效性检查 */ FILE;,FILE f5; FILE *fp;,11.3 常用的文件函数,对文件进行操作之前,必须先打开该文件; 使用结束后,应立即关闭,以免数据丢失。 使用文件函数必须#include“stdio.h“,一.文件的打开fopen()函数用法: FILE *fp;fpfopen(“文件名“,“操作方式“); 功能:返回一个
4、指向指定文件的指针。 说明: (1)“文件名”是指要打开(或创建)的文件名。如果使用字符数组(或字符指针),则不使用双引号,直接写数组名或字符指针名。,11.3.1 文件打开与关闭,(2)“操作方式”如见书222页表111所示。(3)“r(b)+”与“a(b)+”的区别:使用前者打开文件时,读写位置指针指向文件头;使用后者时,读写指针指向文件尾。,(4)如果不能实现打开指定文件的操作,则fopen()函数返回一个空指针NULL (其值在头文件stdio.h中被定义为0)。为增强程序的可靠性,常用下面的方法打开一个文件:FILE *fp; if(fp=fopen(“文件名“,“操作方式“)=NU
5、LL) printf(“can not open this filen“); exit(0); ,(5)在程序开始运行时,系统自动打开三个标准文件,并分别定义了文件指针:标准输入文件stdin:指向终端输入(一般为键盘)。如果程序中指定要从stdin所指的文件输入数据,就是从终端键盘上输入数据。标准输出文件stdout:指向终端输出(一般为显示器)。标准错误文件stderr:指向标准错误输出(一般为显示器)。,关闭已打开的所有文件,结束程序运行 0表示正常退出,非0表示程序出错退出,例 文件打开与测试 FILE *fp;fp=fopen(“aa.c”,“w”);if(fp=NULL) prin
6、tf(“File open error!n”);exit(0);,例 FILE *fp;fp= fopen (“c:fengyibkctest.dat”,”r”);,例 FILE *fp;char *filename=“c:fengyibkctest.dat”fp= fopen(filename,”r”);,二. 文件的关闭fcolse函数,函数原型: int fclose(FILE *文件指针); 用法:fclose(文件指针变量名) 功能:关闭“文件指针”所指向的文件。如果正常关闭了文件,则函数返回值为;否则,返回值为非。例如:FILE *fp;fp=fopen(“data.c“,“r“)
7、; fclose(fp);/*关闭fp所指向的文件*/,11.3.2 文件的读写,文件打开之后,就可以对它进行读与写的操作了 文件中有一个读写位置指针,指向当前的读写位置。每次读写1个(或1组)数据后,系统自动将位置指针移动到下一个读写位置上。,一. 文件的字符读写 1.将一个字符写到文件中fputc()函数 函数原型:int fputc(char c, FILE *stream); 用法:fputc(字符数据,文件指针);其中“字符数据”,既可以是字符常量,也可以是字符变量。 功能:将字符数据输出到“文件指针”所指向的文件中去,同时将读写位置指针向前移动1个字节(即指向下一个写入位置)。 返
8、回值:输出成功,则返回值是输出的字符数据;否则,返回一个符号常量EOF(其值在头文件stdio.h中,被定义为-1)。 例如:fputc(ch,fp);将字符(ch的值)输出到fp所指向的文件中去。,2.从文件中读一个字符fgetc()函数 函数原型:int fputc( FILE *stream); 用法: fgetc(文件指针); 功能:从“文件指针”所指向的文件中,读入一个字符,同时将读写位置指针向前移动1个字节(即指向下一个字符)。 返回值:如果在读字符时遇到文件结束符,函数返回一个文件结束标志EOF(即-1),否则返回所读的字符。例如,chfgetc(fp) ; 对二进制文件执行读入
9、操作时,必须使用库函数feof()来判断是否遇到文件尾。如果遇到文件尾,feof返回1;否则,则返回0。,while(!feof(fp)c=fgetc(fp); ,#include main() FILE *fp;char ch,*filename=“out.txt”;if(fp=fopen(filename,“w“)=NULL) printf(“cannot open filen“);exit(0);printf(“Please input string:“);ch=getchar();while(ch!=#) fputc(ch,fp);putchar(ch);ch=getchar();fc
10、lose(fp); ,#include main() FILE *fp;char ch,*filename=“out.txt”;if(fp=fopen(filename,”r“)=NULL) printf(“cannot open filen“);exit(0);while(ch=fgetc(fp)!=EOF)putchar(ch);fclose(fp); ,例 从键盘输入字符,逐个存到磁盘文件中,直到输入#“为止,例 读文本文件内容,并显示,判断文本文件是否结束,判断二进制文件是否结束while(!feof(fp) c=fgetc(fp);,#include main() FILE *in,
11、 *out;char ch,infile10,outfile10;scanf(“%s“,infile);scanf(“%s“,outfile);if (in = fopen(infile, “r“)= NULL) printf(“Cannot open infile.n“);exit(0);if (out = fopen(outfile, “w“)= NULL) printf(“Cannot open outfile.n“);exit(0);while (!feof(in)fputc(fgetc(in), out);fclose(in); fclose(out); ,feof 函数原型: in
12、t feof(FILE *fp) 功能:判断文件是否结束 返值:文件结束,返回真(非0);文件未结束,返回0,二. 文件的字符串读写 fgets()和fputs()函数 1.库函数fputs()向指定文件输出一个字符串 用法:fputs(字符串,文件指针); “字符串”可以是一个字符串常量,或字符数组名,或字符指针变量名 功能:向指定文件输出一个字符串,同时将读写位置指针向前移动(字符串长度)个字节。如果输出成功,则函数返回值为;否则,为非值2.库函数fgets()从文件中读一个字符串 用法:fgets(指针,串长度+1,文件指针); 功能:从指定文件中读入一个字符串,存入“字符数组指针”中,
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 11 文件 PPT
![提示](http://www.mydoc123.com/images/bang_tan.gif)