C语言程序设计 教学课件 ppt 作者 易晓梅 赵芸 第10章 文件

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

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

1、第10章 文 件,C语言程序设计,第10章 文 件,本章要点 文件的基本概念及文件的分类 文件的打开与关闭操作 以字符为单位的读/写函数 以字符串为单位的读/写函数 按格式读/写函数 以数据块为单位的读/写函数 文件的定位 本章学习目标 掌握文件的打开与关闭操作 掌握文件不同类型的读/写操作 掌握文件的定位函数,10.1 文 件 概 述,1文件是存储在外部 介质上数据的有序集合,是操作系统数据管理的单位。 C语言中,按照不同的分类标准,可以将文件分为不同类别: 按文件的逻辑结构:分为记录文件和流式文件。 按存储介质:分为普通文件、存储介质文件和设备文件。 按数据的组织形式:分为文本文件和二进制

2、文件。,10.1 文 件 概 述,2文本文件与二进制文件 文本文件: 也称为ASCII文件,它是基于字符编码的文件,在磁盘中存放时每个字符对应一个字节,用于存放字符的ASCII码,读出后直接送到输出设备输出相应的字符,因此文本文件最小存取单位为字符。,10.1 文 件 概 述,二进制文件: 按照二进制的编码方式来存放的文件,二进制文件内容是数据的内部表示,其最小存取单位为字节。对于字符信息,数据的内部表示就是字符的ASCII码,因此,对字符信息来说采用文本文件和二进制文件保存没有什么区别,但是对于数值信息,数据的内部表示就完全不一样。,10.1 文 件 概 述,3缓冲文件系统与非缓冲文件系统

3、缓冲文件系统又称为标准文件系统或者高级文件系统,系统会自动为文件开辟一段缓冲区(内存单元)。,10.1 文 件 概 述,图缓冲文件系统工作原理,10.1 文 件 概 述,非缓冲文件系统的缓冲区不由系统自动分配,而由用户根据需要自己设置。当数据从磁盘文件读入内存时,先将数据输入到缓冲区,待缓冲区数据充满,再从缓冲区逐个地将数据送给变量;反之,当数据从内存输出到磁盘文件时,数据先进入缓冲区,待缓冲区数据充满,将数据从缓冲区输出到磁盘文件 。,10.1 文 件 概 述,4文件类型指针 C语言的“stdio.h”头文件中定义了类型标识符为FILE的结构体,用来存储这些文件相关的信息。以下为Visual

4、 C+6.0在“stdio.h”中对FILE类型声明: struct _iobuf char *_ptr; /*索引数据流内容的位置指针*/ int _cnt; /*当前的定位标志*/ char *_base; /*缓冲区基准位置*/ int _flag; /*文件操作方式*/ int _file; /*文件代号*/ int _charbuf; /*字符缓冲信息*/ int _bufsiz; /*缓冲区大小*/ char *_tmpfname; /*临时文件名*/ ; typedef struct _iobuf FILE;,10.1 文 件 概 述,【注意】 FILE不是结构体变量的名字,而是

5、类型名,其用法等同于int、float等。 对文件进行操作前,用户必须要在程序中定义文件类型指针变量,定义格式为: FILE *结构体指针变量名; 例如:FILE *fp;,10.1 文 件 概 述,5文件的操作顺序 一般,编写与文件相关的程序时,有以下步骤: (1)文件的定义。 (2)文件的打开。 (3)文件的读/写。 (4)文件的关闭。,10.2 文件的打开与关闭 10.2.1 打开文件,打开文件的一般形式为: FILE *fp; fp=fopen(文件名,文件使用方式); 例如: FILE *fp; char *name=“mmei.txt“; fp=fopen(name,“w“);,1

6、0.2.1 打开文件,“文件使用方式”是指文件打开后的操作方式,表给出了C语言常用的文件使用方式。,10.2.1 打开文件,10.2.2 关闭文件,关闭文件的一般形式为: fclose(文件指针); 例如: fclose(fp);,【例10.1】编写程序,测试文件的打开和关闭操作是否成功,并在屏幕上给出相关信息。 #include #include void main() FILE *fp; /*定义一个文件指针*/ int i; if(fp=fopen(“d:a.dat“,“a“)=NULL) /* 判断文件是否打开成功*/, printf(“File open errorn“); /*提示

7、打开不成功*/ exit(0); /*退出程序的运行*/ i=fclose(fp); /*关闭打开的文件*/if(i=0) /*判断文件是否关闭成功*/ elseprintf(“OK!“); /*提示关闭成功*/ puts(“File close error“); /*提示关闭不成功并退出程序的运行*/exit(0);,10.3 读/写文件 10.3.1 以字符为单位读/写,1fputc()函数 fputc()函数一般形式为:fputc(ch,fp); 例如: fputc(a,fp); 2fgetc()函数 fgetc()函数一般形式为:ch=fgetc(fp); 例如: while(ch=f

8、getc(fp)!=EOF) putc(ch,out); ,10.3.1 以字符为单位读/写,【注意】 (1)在文本文件中存储的是字符的ASCII码,不可能出现-1,因此对文本文件用fgetc()函数进行读取操作时,可以直接通过函数的返回值是否为EOF(值为-1)来判断到达文件尾部。 (2)在二进制文件中,-1属于合法的二进制数据,因此对于二进制文件用fgetc()函数进行读取操作,采用EOF(值为-1)来判断是否读到文件尾将会影响文件的读取,如:读到二进制文件中所存储的数值-1时,会认为已经读到文件尾,将结束文件的读操作。为解决上述问题,C语言提供feof()函数来判断是否到达文件尾。,10

9、.3.1 以字符为单位读/写,feof()函数一般形式为:feof(fp); feof(fp)的功能是测试文件位置指示器是否到达了文件结尾,若是则返回一个非0值,否则返回0。,10.3.1 以字符为单位读/写,【例10.2】从文件c:read.txt中依次读所有的字符到c并将其输出到文件write.txt中(read.txt文件已经存在)。 #include void main() FILE *fp1,*fp2; char c; fp1=fopen(“c:read.txt“,“r“); fp2=fopen(“c:write.txt“,“w“); while(!feof(fp1) c=fgetc

10、(fp1); fputc(c,fp2); ,10.3.2 以字符串为单位读/写,1fputs()函数 fputs()函数一般形式为:fputs(str,fp); 例如: fputs(“baobei yoyo“,fp); 2fgets()函数 fgets()函数一般形式为:fgets(str,n,fp); 例如: char str20; fgets(str,6,fp);,10.3.3 格式化方式读/写,1fprintf()函数 fprintf()函数的一般形式为:fprintf(文件指针,格式控制字符串,输出表列); 例如: fprintf(fp,“%d,%7.2f, %d“,1,2.8,3);

11、 2fscanf()函数 fscanf()函数的一般形式为:fscanf(文件指针,格式控制字符串,输入表列); 例如: fscanf(fp,“%d,%f“,10.3.4 以数据块为单位读/写,1fwrite()函数 fwrite()函数的一般形式为:fwrite(buffer, size,count, fp); 参数说明如下: buffer:指向要输出数据块的首地址指针; size:每个要写的数据块大小(字节数); count:要写的数据块个数; fp:要进行写操作的文件指针。 例如: float a30; int i; for(i=0;i30;i+) fwrite(,10.3.4 以数据块

12、为单位读/写,2fread()函数 fread()函数的一般形式为:fread(buffer, size,count, fp); 参数说明如下: buffer:指向要读入数据块的首地址指针; size:每个要读的数据块大小(字节数); count:要读的数据块个数; fp:要进行读操作的文件指针。 例如: float a3; fread(a,4,3,fp);,10.4 文件的定位,1rewind()函数 rewind()函数的一般格式为:rewind(文件指针); rewind()函数用于将文件指针移到文件的开头,它没有返回值。 例如: rewind(fp);,10.4 文件的定位,2fsee

13、k()函数 fseek()函数的一般格式为:fseek(文件指针,位移量,起始点); 参数说明如下: 第一个参数“文件指针”指向被移动的文件。 第二个参数“位移量”表示移动的字节数,要求位移量是long型数据,这样在文件长度大于64KB 时才不会出错,当用常量表示位移量时,要求加后缀字母L。 第三个参数“起始点”表示从何处开始计算位移量,规定的起始点有三种:文件头,当前位置和文件尾。其表示方法如表所示。,10.4 文件的定位,10.4 文件的定位,例如: fseek(fp,10L,0); 上述代码实现的功能是将位置指针移动至离文件头10个字节处。 fseek(fp,10L,1); 上述代码实现

14、的功能是将位置指针移动至离当前位置10个字节处。 fseek(fp,-10L,2); 上述代码实现的功能是将位置指针移动至离文件尾10个字节处。,10.4 文件的定位,3ftell()函数 ftell()函数的一般格式为:ftell(文件指针); ftell()函数用来得到文件指针离文件头的偏移量。当返回值为-1时表示出错。 例如: if(ftell(fp)=-1L) printf(“errorn“);,10.5 实 例 剖 析,【例10.3】从键盘输入一行字符,将其存入当前目录的a.txt文件中。 #include #include void main() FILE *fp; /*定义一个文

15、件指针*/ char ch; if(fp=fopen(“a.txt“,“w“)=NULL) /* 判断文件是否打开成功*/ printf(“File open errorn“); /*提示打开不成功*/ ,10.5 实 例 剖 析,exit(0); /*退出程序的运行*/ while(ch=getchar()!=n) /*直到输入Enter 结束循环*/ putc(ch,fp); /*将输入的字符写入fp所指向的文件*/if(fclose(fp) /*关闭文件并判断是否成功*/ puts(“File close error“); exit(0); ,10.5 实 例 剖 析,【例10.4】编程

16、实现将文本文件in.txt的内容复制到文本文件out.txt中。 #include #include void main() FILE *in,*out; /*定义文件指针*/ char ch; if(in=fopen(“c:in.txt“,“r“)=NULL) printf(“InFile open errorn“); exit(0); ,10.5 实 例 剖 析,if(out=fopen(“c:out.txt“,“w“)=NULL) printf(“OutFile open errorn“); exit(0);while(!feof(in) /*直到文件尾结束循环*/ fputc(fgetc(in),out); /*从文件in.txt 读取字符,并输出到out.txt*/ if(fclose(in)

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

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

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