C语言程序设计 教学课件 ppt 作者 王曙燕 主编 曹锰 副主编chp11

上传人:w****i 文档编号:94381133 上传时间:2019-08-06 格式:PPT 页数:22 大小:111.50KB
返回 下载 相关 举报
C语言程序设计 教学课件 ppt 作者 王曙燕 主编 曹锰 副主编chp11_第1页
第1页 / 共22页
C语言程序设计 教学课件 ppt 作者 王曙燕 主编 曹锰 副主编chp11_第2页
第2页 / 共22页
C语言程序设计 教学课件 ppt 作者 王曙燕 主编 曹锰 副主编chp11_第3页
第3页 / 共22页
C语言程序设计 教学课件 ppt 作者 王曙燕 主编 曹锰 副主编chp11_第4页
第4页 / 共22页
C语言程序设计 教学课件 ppt 作者 王曙燕 主编 曹锰 副主编chp11_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《C语言程序设计 教学课件 ppt 作者 王曙燕 主编 曹锰 副主编chp11》由会员分享,可在线阅读,更多相关《C语言程序设计 教学课件 ppt 作者 王曙燕 主编 曹锰 副主编chp11(22页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计 第十一章 文 件,第11章 文件,11. 1 文件的概述 文件的概念 文件(file)是指存储在外存上数据的集合。 从操作系统的角度上看,每个与主机相联的输入输出设备都 被看作是一个文件。例如:终端键盘是输入文件,显示屏和打印机是输出文件。 文件的分类 C语言把文件看作是一个字符(字节)序列。根据数据组成的形式,C文件可分为: (1) ASCII文件又称文本(text)文件,它的每一个字节放ASCII代码,代表一个字符。 (2) 二进制文件,是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。,C语言程序设计 第十一章 文 件,例如: 整数10000,在内存中占2个字节

2、,如果按二进制形式存放仍占2个字节,而按ASCII码存放,则占5个字节。,ASCII码形式便于直接输出字符。但占存储空间多,运算时要花转换时间(二进制与ASCII码间的转换)。 用二进制形式,可以节省外存空间和转换时间,但一 个字节并不对应一个字符,不能直接输出字符形式。,C语言程序设计 第十一章 文 件,C语言程序设计 第十一章 文 件,根据文件依附的介质,可分为普通文件和设备文件。 根据文件的组织方式,可分为顺序读写文件和随机读写文件。,文件的操作流程,建立/打开文件。 从文件中读数据或向文件中写数据。 关闭文件。,C语言程序设计 第十一章 文 件,11. 2 文件类型的指针,每个被使用的

3、文件都在内存中开辟一个区,用来存放有关信息。这些信息保存在一个结构体类型变量中,这个结构体类型已在stdio.h头文件中由系统声明了的,取名为FILE(注意是大写)。 例如:可以定义FILE类型的数组f, FILE f 5; 数组 f 可以用来存放5个文件的信息。 还可以定义文件型指针变量。 FILE *fp: fp是指向FILE类型结构体的文件指针变量。通过fp能够找到与它相关的文件,访问该文件。如果有n个文件,一般应该设n个指向FILE类型的指针变量,使它们分别指向n个文件(确切地说指向存放该文件信息的结构体变量)以实现对文件的访问。,C语言程序设计 第十一章 文 件,11. 3 文件的打

4、开与关闭,打开文件fopen函数 fopen( )其调用的一般形式为: 文件指针名=fopen(文件名,文件打开方式); 如 p=fopen(“test.txt”, “r”); 它的含义是:打开文件名为test.txt的文件,采用读入的方式,若打开成功,返回指向文件“test.txt”的FILE类型的指针并赋给变量p,从此以后,使用指针p就是使用文件test.txt了。,C语言程序设计 第十一章 文 件,C语言程序设计 第十一章 文 件,说明: (1) 用“r”方式打开的文件只能向内存输入数据,不能用“r”方式打开不存在的文件,否则出错。 (2) 用“w”方式打开的文件只能向该文件写数据不能从

5、该文件读数据,如果原来不存在该文件,则建立新文件,如果原来该文件已存在,则打开时该文件删空重写。 (3)用“a”方式打开的文件只能向文件末尾添加数据。该文件必须存在,否则出错。打开时位置指针指向文件末尾。 (4)用“r+”,“w+”, “a+”方式打开的文件, 既可以输入数据,也可以用来输出数据,用“r+” 时该文件应该存在。,C语言程序设计 第十一章 文 件,(5) 若不能实现“打开”,fopen函数返回空指针NILL。如: if (fp=fopen(“file1“,“r“)=NULL) printf(“cannot open this filen“); exit(0); 先检查“打开”能否

6、实现,若有错就输出“cannot .“。exit(0)函数的作用是关闭所有文件,终止当前过程。 (6) 在程序开始运行,系统自动打开3个标准文件:标准输入,标准输出,标准出错输出。都不必另外打开。,文件的关闭(fclose函数) 在使用完一个文件后应该关闭它,以防止丢失数据。“关闭”就是使文件指针变量与该文件“脱钩”,除非再次打开它。 用fclose函数关闭文件。调用它的一般形式为: fclose(文件指针); 例如: fclose (fp); 通过 fclose(fp); 把该 fp 指向的结构体对应的文件关闭。,C语言程序设计 第十一章 文 件,11. 4 文件的顺序读写,文件打开之后,就

7、可以用读写函数进行读写。 fputc和fgetc函数(putc和getc函数) fputc函数 把一个字符写到磁盘文件上去。其一般调用形式为: fputc(ch,fp); 它的作用是将ch的字符值输出到fp所指向的文件中去。如果输出成功则返回该字符;如果输出失败,则返回EOF。 fgetc函数 从指定的文件读一个字符,它的调用形式为: fgetc(fp); 它的作用是从fp指定的文件读一个字符。函数返回此字符。如果遇到文件结束符,返回函数值EOF。 例: 从磁盘文件顺序读入字符并在屏幕上显示: while(ch=fgetc(fp)!=EOF) putchar(ch);,C语言程序设计 第十一章

8、 文 件,例:从键盘输入字符,逐个送到磁盘上,直到“#”为止。,#include main() 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!=#) fputc(ch,fp); putchar(ch); ch=getchar(); fclose(fp); ,

9、运行情况如下: file.c (输入文件名) computer and c# (输入字符串) computer and c (输出字符串),C语言程序设计 第十一章 文 件,字符串读写函数fgets和fputs,读字符串函数fgets 函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为: fgets(字符数组名,n,文件指针); 如: FILE *fp; fp=fopen(“string.txt“,“rt“); char str10; fgets(str,5,fp); 功能是从fp所指的文件string.txt中读取4(5-1)个字符送入字符数组str中。,C语言程序设计 第

10、十一章 文 件,写字符串函数fputs fputs函数的功能是向指定的文件写入一个字符串,其调用形式为: fputs(字符串,文件指针); 例如:fputs(“abcd”,fp); 功能是把字符串“abcd”写入fp所指的文件之中。,C语言程序设计 第十一章 文 件,格式化读写函数fscanf和fprintf,fprintf函数和fscanf函数与printf函数和scanf函数作用相仿,都是格式化读写函数。不同的是fprintf函数和fscanf函数读写对象是磁盘文件。它们的一般调用形式为: fprintf (文件指针,格式字符串,输出表列); fscanf(文件指针,格式字符串,输入表列)

11、; 例如: fprintf( fp, “%d,%6.2f“, i, t) ; fscanf( fp, “%d,%f“, ,C语言程序设计 第十一章 文 件,数据块读写函数fread和fwrite,fread和fwrite函数的一般调用形式为: fread(buffer,size,count,fp); fwrite(buffer,size,count,fp); 其中: buffer是一个指针.对fread来说,它是读入数据存放的地址.对fwrite来说,是要输出的数据存放的地址. size:要读写数据项的字节数. count:要进行读写多少个size字节的数据项. fp:文件型指针. 如果文件以

12、二进制形式打开,用fread和fwrite函数就可以读写任何类型的信息.,C语言程序设计 第十一章 文 件,例:从键盘输入一个班30个学生的数据并保存到磁盘文件中,再读出该班学生的数据显示在屏幕上。,#define N 30 #include struct stu char name10; int num; int age; char addr15; classN;,main() int i; FILE *fp; printf(“请输入该班的数据:n“); for(i=0;iN;i+) printf(“第%d个人的信息:n“,i+1); printf(“姓名:“); scanf(“%s“,cl

13、assi.name); printf(“n学号:“); scanf(“%d“, ,C语言程序设计 第十一章 文 件,for(i=0;iN;i+) if(fwrite( ,C语言程序设计 第十一章 文 件,11. 5 文件的随机读写,文件中有一个位置指针指向当前读写的位置。 rewind(fp)函数 rewind函数调用形式为: rewind(文件指针); 将文件的位置指针重新返回到文件头。 fseek函数 fseek函数调用形式为: fseek(文件类型指针,位移量,起始点) 按照(起始点+位移量)设置文件位置指针的当前位置。 起始点取值:SEEK_SET 0 文件头, SEEK_CUR 1

14、当前位置, SEEK_END 2 文件尾.,C语言程序设计 第十一章 文 件,ftell函数 int ftell(fp)函数的作用是返回当前文件指针位置,用相对于文件开头的位移量来表示 例如: i=ftell(fp); if(i=-1L) printf(“errorn”); 变量i存放当前位置,如调用函数出错(如不存在此文件),则输出“error”。,C语言程序设计 第十一章 文 件,11. 6 其他读写函数,getw 函数和putw函数 用来对磁盘文件读写一个字(整数) 。函数原型为: getw( FILE *fp); putw( int i, FILE *fp); 例如: i=getw(fp); 从fp指定的磁盘文件读一整数到内存,赋给变量i 。 putw( 10, fp); 将整数10输出到fp指定的磁盘文件。,C语言程序设计 第十一章 文 件,11. 6 出错的检测,feof(fp)函数 feo

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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