北京科技大学C语言第8章课件

上传人:我*** 文档编号:145713313 上传时间:2020-09-22 格式:PPT 页数:54 大小:277.50KB
返回 下载 相关 举报
北京科技大学C语言第8章课件_第1页
第1页 / 共54页
北京科技大学C语言第8章课件_第2页
第2页 / 共54页
北京科技大学C语言第8章课件_第3页
第3页 / 共54页
北京科技大学C语言第8章课件_第4页
第4页 / 共54页
北京科技大学C语言第8章课件_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《北京科技大学C语言第8章课件》由会员分享,可在线阅读,更多相关《北京科技大学C语言第8章课件(54页珍藏版)》请在金锄头文库上搜索。

1、1,第8章 文件,北京科技大学 计算机系,C 语言程序设计,2020/9/22,2,文件,文件和文件类型指针 文件的打开与关闭 文本文件的读写 二进制文件的读写 文件读写指针定位函数 小结,2020/9/22,3,文件,前几章中的程序 数据输入:键盘 数据输出:显示器 实际应用中,需要将数据以文件的形式长期保存在计算机外存中 C语言提供输入/输出函数,用于完成数据文件的建立、读写、追加等处理,2020/9/22,4,8.2 文件和文件类型指针,文件是指存储在外部存储介质上相关数据的集合,1 何谓文件,每个文件必须赋以一个文件名,它是文件的重要标识 程序通过文件名访问文件,处理数据 操作系统按文

2、件名对文件进行管理,C语言把文件作为一个字符(字节)序列处理 对文件的存取是以字符(字节)为单位进行的,2020/9/22,5,8.2 文件和文件类型指针,按其存放内容分 程序文件 数据文件 按照对文件的不同处理方式分 缓冲文件 非缓冲文件,2 文件的种类,2020/9/22,6,8.2 文件和文件类型指针,按其存放的代码形式分 ASCII文件 二进制文件,2 文件的种类,2020/9/22,7,8.2 文件和文件类型指针,用缓冲文件系统处理的文件称为缓冲文件 系统在内存中为每个正在使用的缓冲文件开辟一个缓冲区,其大小是512字节 对文件读写数据都通过缓冲区进行,3 缓冲文件和文件指针,202

3、0/9/22,8,8.2 文件和文件类型指针,文件指针是指向含有文件信息的结构体类型指针 此结构体类型由系统定义 在stdio.h文件中将其定义为FILE类型 缓冲文件系统自动为每一个正在使用中的文件分配一个FILE类型变量,用于存放该文件的有关信息 定义形式为: FILE *fp;,3 缓冲文件和文件指针,2020/9/22,9,8.2 文件和文件类型指针,外部设备中的3个特殊的设备文件 标准输入文件 文件指针为stdin,系统指定为键盘 标准输出文件 文件指针为stdout,系统指定为显示器 标准错误输出文件 文件指针为stderr,系统指定为显示器 输出错误信息,4 标准文件,2020/

4、9/22,10,8.2 文件和文件类型指针,利用非缓冲文件系统处理的文件 系统处理非缓冲文件时 不为文件开辟缓冲区 需要程序员自行设计并管理缓冲区 非缓冲文件系统处理的文件大都是二进制文件 即使使用非缓冲文件系统建立ASCII文件,其文件结尾处也和二进制文件一样,没有文件结束标志,系统靠文件长度判断其是否结束,5 非缓冲文件,2020/9/22,11,8.3 文件的打开与关闭,对文件的操作一般都需要经过3个步骤: 打开文件 读写文件 关闭文件,C语言中分别用不同的函数 实现这些文件操作,2020/9/22,12,8.3 文件的打开与关闭,调用的一般格式为: fopen(文件名,文件使用方式)

5、功能: 按指定的使用方式打开指定的文件,并为该文件分配一个文件缓冲区和一个FILE类型变量 若成功地打开指定文件,则返回一个指向该文件的FILE类型指针(即系统为其分配的FILE类型变量的首地址) 若文件打开失败,则返回NULL,1 文件打开函数 fopen( ),2020/9/22,13,8.3 文件的打开与关闭,说明: 调用函数时,文件名应是字符串表示形式 文件使用方式也应是字符串表示形式 调用该函数时,必须用include命令包含stdio.h文件 调用时通常采用的形式: fp=fopen(文件名,文件使用方式); /*设fp已定义为FILE类型指针*/,1 文件打开函数 fopen(

6、),2020/9/22,14,8.3 文件的打开与关闭,1 文件打开函数 fopen( ),2020/9/22,15,8.3 文件的打开与关闭,打开文件过程中存在出错的可能性,1 文件打开函数 fopen( ),检查的常用方法: if(fp=fopen(filel.dat,w)=NULL) printf(Cant open this filen); exit(0); ,判断以写方式新建并打开“filel.dat”文件是否成功 其中exit函数的作用是结束程序的执行,并将实参0作为函数返回值传给操作系统,2020/9/22,16,8.3 文件的打开与关闭,调用的一般格式为: fclose(文件指

7、针); 功能: 关闭文件指针所指向的文件,释放该文件的缓冲区及FILE类型变量 若成功地关闭文件,则返回0 若文件关闭失败,则返回EOF,2 文件关闭函数 fclose( ),2020/9/22,17,8.3 文件的打开与关闭,说明: 文件指针是FILE类型的指针,且必须是fopen()返回的文件指针 EOF是系统定义的文本文件结束标志,其值为(-1) 调用该函数时,必须用include命令包含stdio.h文件,2 文件关闭函数 fclose( ),2020/9/22,18,8.3 文件的打开与关闭,应及时关闭不再使用的文件,2 文件关闭函数 fclose( ),操作系统允许同时打开的文件个

8、数是有限的,在程序设计中应养成及时关闭文件的习惯,系统配置的缓冲区个数也是有限的,程序对文件的读写都是通过缓冲区进行的,2020/9/22,19,8.4 文本文件的读写,8.4.1 文件的字符输入/输出函数,运用字符输入输出函数、字符串输入输出函数和格式输入输出函数可以实现对文本文件的读写 它们的原型说明都在stdio.h文件中 因此调用这些函数时,必须在程序中加入预处理命令: #include 或#include “stdio.h”,2020/9/22,20,8.4.1 文本的字符输入/输出函数,1 字符输出函数 fputc( ),fputc(ch,fp) 其中 ch是字符数据,可以是自负常

9、量,也可以是字符变量 fp是文件指针变量,指向以写方式打开的文件 功能: 把ch所表示的字符的ASCII值写入fp所指向的文件,并返回写入文件的字符代码值 若调用失败,则返回EOF,2020/9/22,21,8.4.1 文本的字符输入/输出函数,1 字符输出函数 fputc( ),说明: putc函数与fputc函数的功能相同 在stdio.h文件中被定义为: #define putc(c,f) fputc(c),f) 标准文件中用的putchar函数是fputc函数的特殊用法 在stdio.h文件中被定义为: #define putchar(c) putc(c),stdout),2020/9

10、/22,22,8.4.1 文本的字符输入/输出函数,2 字符输入函数 fgetc( ),调用的一般格式为: fgetc(fp) 其中fp是文件指针变量,并且它指向的文件是以读方式打开的文件 功能: 从fp所指向的文件中读取一个字符的ASCII值,并返回从文件中读出的字符代码值 若文件结束或调用失败,则返回EOF,2020/9/22,23,8.4.1 文本的字符输入/输出函数,2 字符输入函数 fgetc( ),说明: getc函数与fgetc函数的功能相同 在stdio.h文件中被定义为: #define getc(f) fgetc(f) 标准文件中用的getchar函数是fgetc函数的特殊

11、用法 在stdio.h文件中被定义为: #define getchar() getc(stdin),2020/9/22,24,8.4.1 文本的字符输入/输出函数,【例8-1】利用fputc和fgetc函数建立一个文本文件,并显示文件中的内容,#include stdio.h #include stdlib.h main() FILE *fp; /*定义一个文件指针变量fp*/ int c; /*c为存放字符的变量*/ char filename40; /*filename用于存放数据文件名*/ printf(filename:); /*提示输入磁盘文件名*/ gets(filename);

12、if(fp=fopen(filename,w)=NULL) printf(Cant open the %sn,filename exit(1); /*新建并打开一个文本文件,同时测试是否成功*/,2020/9/22,25,8.4.1 文本的字符输入/输出函数,while(c=getchar()!=EOF) putc(c,fp); /*将键盘输入的字符写到文件中*/ fclose(fp);/*建立文件结束,关闭文件*/ printf(outfile:n); fp=fopen(filename,r);/*以读方式打开文本文件*/ while(c=getc(fp)!=EOF)/*当未读到文件结束标志

13、时*/ putchar(c);/*在显示器显示读出的字符*/ fclose(fp);/*读文件结束,关闭文件*/ ,先把键盘文件读取的内容逐个字符地保存到一个新建立的磁盘文件中,然后再以读方式打开磁盘文件,将文件内容原样显示,2020/9/22,26,8.4.1 文本的字符输入/输出函数,3 文件结束测试函数 feof( ),EOF是文本文件结束标志 在stdio.h文件中定义为: # define EOF (-1) 对文本文件进行读操作时 当fgetc()返回EOF,即可作文件结束处理 在二进制文件中不设EOF标志,2020/9/22,27,8.4.1 文本的字符输入/输出函数,3 文件结束

14、测试函数 feof( ),调用的一般格式为: feof(fp) 其中 fp是文件指针变量,指向一个打开的文件 功能: 测试fp所指向的文件是否已读到文件尾部 若该文件没有结束,则返回0 若文件结束,则返回非0值,2020/9/22,28,8.4.1 文本的字符输入/输出函数,【例8-1】复制一个磁盘文件,#include stdio.h #include stdlib.h void main(int argc,char *argv) FILE *infp,*outfp; char infile40,outfile40; int c; if(argc3) if(argc=2)printf(out

15、put filename: ); gets(outfile); argv2=outfile; elseprintf(input filename:); gets(infile); printf(output filename:); gets(outfile); argv1=infile; argv2=outfile; ,定义源文件指针和目标文件指针,定义字符数组, 存放源文件名和目标文件名,如果只有一个数据文件名,则提示输入目标文件名,如果没有数据文件名,则提示输入源文件名和目标文件名,2020/9/22,29,8.4.1 文本的字符输入/输出函数,if(infp=fopen(argv1,r)

16、=NULL printf(Cant open the %sn,argv1); exit(1); if(outfp=fopen(argv2,w)=NULL printf(Cant open the %sn,argv2); exit(2); c=getc(infp); while(!feof(infp)putc(c,outfp); c=getc(infp); fclose(infp); fclose(outfp); printf(okn); ,该程序采用了带参主函数。,以读方式打开源文件并测试是否成功,新建并打开目标文件,测试是否成功,将源文件读取的字符写到目标文件中,2020/9/22,30,8.4.2 文本的字符串输入输出函数,1 字符串输出函数 fputs( ),调用的一般格式为: fputs(str,fp) str是字符串形式 可以是字符串常量 也可以是存放字符串的字符数组名或指向字符串的指针 fp是文件指针变量 指向以写方式打开的文件,2020/9/22,31,8.4.2 文本的字符串输入输出函数,1 字符

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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