C程序设计简明教程 教学课件 ppt 作者 雷新贤 刘朋 王映龙 c08

上传人:E**** 文档编号:89394511 上传时间:2019-05-24 格式:PPT 页数:24 大小:391.50KB
返回 下载 相关 举报
C程序设计简明教程  教学课件 ppt 作者 雷新贤 刘朋 王映龙 c08_第1页
第1页 / 共24页
C程序设计简明教程  教学课件 ppt 作者 雷新贤 刘朋 王映龙 c08_第2页
第2页 / 共24页
C程序设计简明教程  教学课件 ppt 作者 雷新贤 刘朋 王映龙 c08_第3页
第3页 / 共24页
C程序设计简明教程  教学课件 ppt 作者 雷新贤 刘朋 王映龙 c08_第4页
第4页 / 共24页
C程序设计简明教程  教学课件 ppt 作者 雷新贤 刘朋 王映龙 c08_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《C程序设计简明教程 教学课件 ppt 作者 雷新贤 刘朋 王映龙 c08》由会员分享,可在线阅读,更多相关《C程序设计简明教程 教学课件 ppt 作者 雷新贤 刘朋 王映龙 c08(24页珍藏版)》请在金锄头文库上搜索。

1、中国铁道出版社,第8章 数据文件,8.1 文件引例 8.2 文件的基本概念 8.3 文件的打开与关闭 8.4 文件读/写操作 8.5 文件应用案例 8.6 自主学习,中国铁道出版社,例8.1 从键盘输入圆的半径,分别计算出圆的周长和面积后, 把圆的周长和面积写入到文件out.txt文件中。 #include #define PI 3.1415926 void main() float r,circum,area; FILE *fp; / 定义文件指针 printf(“请正确输入圆的半径r:n“); scanf(“%f“, / 关闭文件 ,8.1 文件引例,磁盘文件的作用就是使数据和程序分离,让

2、数据长期保存,并可以重复使用。,中国铁道出版社,8.2.1 文件: 文件指存储在外部介质(如硬盘)上数据的集合。 操作系统是以文件为单位对数据进行管理的。,8.2 文件的基本概念,中国铁道出版社,文件的分类 按数据的组织形式: ASCII文件(文本文件):每一个字节放一个ASCII代码 二进制文件:把内存中的数据按其在内存中的存储形 式原样输出到磁盘上存放。 例:整数10000在内存中的存储形式以及分别按ASCII 码形式和二进制形式输出如下图所示:,中国铁道出版社,ASCII文件和二进制文件的比较: ASCII文件便于对字符进行逐个处理,也便于输出 字符。但一般占存储空间较多,而且要花费转换

3、时 间。 二进制文件可以节省外存空间和转换时间,但一个 字节并不对应一个字符,不能直接输出字符形式。 一般中间结果数据需要暂时保存在外存上,以后又 需要输入内存的,常用二进制文件保存。,中国铁道出版社,8.2.2 文件指针,文件型指针变量: FILE *fp; fp是一个指向FILE类型结构体的指针变量。 可以使fp指向某一个文件,通过该变量可以访问该文件。 如果有个文件,一般应设个指针变量,使它们分别 指向个文件,以实现对文件的访问。,中国铁道出版社,8.3 文件的打开与关闭,8.3.1.文件的打开(fopen函数) 函数调用: FILE *fp; fpfopen(文件名,使用文件方式);

4、需要打开的文件名,也就是准备访问的文件的 名字; 使用文件的方式(“读”还是“写”等); 让哪一个指针变量指向被打开的文件。,中国铁道出版社,文件的打开与关闭(续),文件使用方式 含 义 “r” (只读)为输入打开一个文本文件 “w” (只写)为输出打开一个文本文件 “a” (追加)向文本文件尾增加数据 “rb” (只读)为输入打开一个二进制文件 “wb” (只写)为输出打开一个二进制文件 “ab“ (追加)向二进制文件尾增加数据 “r+“ (读写)为读/写打开一个文本文件 “w+” (读写)为读/写建立一个新的文本文件 “a+” (读写)为读/写打开一个文本文件 “rb+“ (读写)为读/写

5、打开一个二进制文件 “wb+“ (读写)为读/写建立一个新的二进制文件 “ab+” (读写)为读/写打开一个二进制文件,中国铁道出版社,文件的打开与关闭(续),2.文件的关闭(fclose函数) 函数调用: fclose(文件指针); 函数功能: 使文件指针变量不指向该文件,也就是文件指针变 量与文件“脱钩”,此后不能再通过该指针对原来与 其相联系的文件进行读写操作。 返回值: 关闭成功返回值为;否则返回EOF(-1) 。,中国铁道出版社,8.4 文件的读写,8.4.1 格式化读写函数(fprintf()和fscanf() 函数调用: fprintf ( 文件指针,格式字符串,输出表列); f

6、scanf ( 文件指针,格式字符串,输入表列); 函数功能: 从磁盘文件中读入或输出字符。 例: fprintf(fp,”%d,%6.2f”,i,t); fscanf (fp,”%d,%f”,中国铁道出版社,例8.2 用格式化读的方式把例8.1产生的数据文件out.txt 的内容读出来,并显示在屏幕上。 文件out.txt内容为:1.000000,6.283185,3.141593,共3个数据,且数据间用逗号“,”隔开,所以读程序可用3个变量表示这3个数据,读格式也要用逗号“,”隔开。 #include void main( ) float r,circum,area; FILE *fp;

7、if(fp=fopen(“out.txt“,“r“)=NULL) printf(“cannot open filen“); exit(0); printf(“半径:%f,周长:%f,面积:%f“,r,circum,area); fscanf(fp,“%f,%f,%f“, ,中国铁道出版社,8.4.2 字符输入输出函数(fputc()和fgetc() fputc函数 函数调用: fputc ( ch,fp ) ; 函数功能: 将字符(ch的值)输出到fp所指向的文件中去。 返回值: 如果输出成功,则返回值就是输出的字符; 如果输出失败,则返回一个EOF。,中国铁道出版社,fgetc函数 函数调用

8、: chfgetc(fp); 函数功能: 从指定的文件读入一个字符,该文件必须是以读或 读写方式打开的。 返回值: 读取成功一个字符,赋给。 如果遇到文件结束符,返回一个文件结束标志 EOF 。,中国铁道出版社,例如 从一个文本文件顺序读入字符并在屏幕上显示出来: ch = fgetc(fp); while(ch!=EOF) putchar(ch); ch = fgetc(fp); 注意:EOF不是可输出字符,因此不能在屏幕上显示。 由于字符的ASCII码不可能出现,因此EOF定义为 是合适的。当读入的字符值等于时,表示读入 的已不是正常的字符而是文件结束符。,中国铁道出版社,fputc和fg

9、etc函数使用举例: 例从键盘输入一些字符,逐个把它们送到 磁盘上去,直到输入一个“”为止。,#include #include void main(void) FILE *fp; char ch,filename10; scanf(“%s“,filename); if(fp=fopen(filename,“w“)=NULL) printf(“cannot open filen“); exit(0); /*终止程序*/ ch=getchar( ); /*接收执行scanf语句时最后输入的回车符 */ ch=getchar( ); /* 接收输入的第一个字符 */ while(ch!=#) fp

10、utc(ch,fp);putchar(ch); ch=getchar(); fclose(fp); ,运行情况如下: file1.c (输入磁盘文件名) computer and c #(输入一个字符串) computer and c (输出一个字符串),中国铁道出版社,8.4.3. 其他读写函数 fgets函数 函数作用:从指定文件读入一个字符串。 函数调用:fgets(str,n,fp); 从fp指向的文件输入n-1个字符,在最后加一 个0。 返回值:str的首地址。,中国铁道出版社,fputs函数 函数作用:向指定的文件输出一个字符串。 函数调用:fgets(“china”,fp); 第

11、一个参数可以是字符串常量、字符数组名或字 符型指针。字符串末尾的不输出。 返回值:输入成功,返回值为0;输入失败, 返回EOF。,中国铁道出版社,8.4.4. 数据块读写函数(fread()和fwrite()函数调用: fread (buffer,size,count,fp); fwrite(buffer,size,count,fp); 参数说明: buffer:是一个指针。对fread 来说,它是读入数据 的存放地址。对fwrite来说,是要输出数据的地址 (均指起始地址)。 size: 要读写的字节数。 count: 要进行读写多少个size字节的数据项。 fp: 文件型指针。,中国铁道出

12、版社,8.5 文件应用案例,例8.5 有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中,中国铁道出版社,#include “stdio.h“ void main() FILE *fp; int i,j,n,ni; char c160,t,ch; if(fp=fopen(“A.txt“,“r“)=NULL) printf(“file A cannot be openedn“); exit(0); printf(“A contents are :n“); for(i=0;(ch=fgetc(fp)!=EOF;i+) ci=ch; putch

13、ar(ci); fclose(fp); ni=i; if(fp=fopen(“B.txt“,“r“)=NULL) printf(“file B cannot be openedn“); exit(0); ,printf(“n B contents are :n“); for(i=ni;(ch=fgetc(fp)!=EOF;i+) ci=ch; putchar(ci); fclose(fp); n=i; for(i=0;icj) t=ci;ci=cj;cj=t; printf(“n C file is:n“); fp=fopen(“C.txt“,“w“); for(i=0;in;i+) putc

14、(ci,fp); putchar(ci); printf(“n”); fclose(fp); ,打开文件A,读文件B 到数组C,打开文件B,对数组C排序,读文件A 到数组C,运行结果,中国铁道出版社,8.6 自 主 学 习,8.6.1 文件的定位 实现随机读/写的关键是要按要求移动位置指针,这称为文件的定位。移动文件内部的位置指针的函数主要有两个,即rewind()函数和fseek()函数。可以得到文件内部指针当前位置的函数为ftell()函数。 rewind()函数前面已多次使用过,其调用形式如下: rewind(文件指针); 它的功能是把文件内部的位置指针移到文件首。其返回值:正确返回0;

15、错误返回非0。 fseek()函数用来移动文件内部位置指针,其调用形式如下: fseek( FILE *fp, long offset, int from );,中国铁道出版社,简要说明: fp为“文件指针”指向被移动的文件。 offset为“位移量”,表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64KB 时不会出错。当用常量表示位移量时,要求加后缀“L”。 from为“起始点”,表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置和文件尾。功能是将fp所指向的文件内部指针从from移动offset个字符,指向新的位置。其表示方法如表8-2所示。 表8-2 文件内部起始点表示方法,中国铁道出版社,8.6.2 文件的出错检测,语言中常用的文件检测函数有以下几个: (1)文件结束检测函数 feof()函数调用格式如下: feof(FILE *fp); 功能:判断文件是否处于文件结束位置,如文件结束,则返回值为1,否则为0。 (2)读/写文件出错检测函数 ferror函数调用格式如下: ferror(FILE *fp); 功能:检查fp所指向的文件在最近一次的操作时是否发生错误(用各种输入输出函数进行读/写),如返回值为0表示未出错,否则表示有错,并保存这个状况到下一次操作。 (3)文件出错标志和文件结束标

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

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

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