第10章 文件.ppt
《第10章 文件.ppt》由会员分享,可在线阅读,更多相关《第10章 文件.ppt(33页珍藏版)》请在麦多课文档分享上搜索。
1、第10章 文件,本章学习目标理解文本文件和二进制文件的区别; 理解 FILE *fp 文件指针; 能够用函数fopen和fclose打开和关闭文件; 掌握常用的文件读/写函数;,目 录,C文件基础知识,文件的打开与关闭,文件的读写,文件的定位,出错的检测,10.1 C文件基础知识 1、文件:存储在外部介质上数据的集合,是操作系统数据管理的单位。,静夜思 床前明月光, . . . 12345 6784,2、文件分类 按文件的逻辑结构: 记录文件:由具有一定结构的记录组成(定长和不定长) 流式文件:由一个个字符(字节)数据顺序组成,按数据的组织形式: 文本文件: ASCII文件,每个字节存放一个字
2、符的ASCII码二进制文件:数据按其在内存中的存储形式原样存放,文本文件特点: 存储量大、速度慢、便于对字符操作,二进制文件特点: 存储量小、速度快、便于存放中间结果,3、文件缓冲区 缓冲文件系统:高级文件系统,系统自动为正在使用的文件开辟内存缓冲区。可减少主机和外部设备频繁交换数据的次数,4、文件类型指针 文件结构体类型FILE 缓冲文件系统为每个正使用的文件在内存开辟文件信息区 文件信息用系统定义的名为FILE的结构体描述 Turbo C在stdio.h文件中有以下的文件类型声明:,typedef struct short level; /*缓冲区“满”或“空”的程度*/unsigned
3、flags; /*文件状态标志*/char fd; /*文件描述符*/unsigned char hold; /*如无缓冲区不读取字符*/short bsize; /*缓冲区的大小*/unsigned char *buffer; /*数据缓冲区的位置*/unsigned ar *curp; /*指针,当前的指向*/unsigned istemp /*临时文件,指示器*/short token; /*用于有效性检查*/ FILE;,定义文件类型变量 定义文件型指针变量,指向FILE类型结构体变量,通过该结构体变量中的文件信息访问文件。 如:FILE *fp;,静夜思 床前明月光, . . . 1
4、2345 6784,fp,10.2 文件的打开与关闭C文件操作用库函数实现,包含在stdio.h文件使用方式: 打开文件文件读/写关闭文件,系统自动打开和关闭三个标准文件:标准输入-键盘 stdin标准输出-显示器 stdout标准出错输出-显示器 stderr,1、文件的打开(fopen函数)函数原型: FILE *fopen(char *name,char *mode)调用方式:fopen(“文件名“,“使用文件方式“)例:FILE *fp;fp=fopen(“d:usermyfile.txt“,“r“);,为什么 ,Read,返回值:正常打开,返回指向文件结 构体的指针;打开失败,返回
5、NULL,FILE *fp; if (fp=fopen(“file1”,“r”)=NULL) printf(“cannot open this file!n”);exit(0); /*关闭所有文件终止调用*/ ,2、文件的关闭(fclose函数) 作用:使文件指针变量与文件“脱钩”,释放文件结构体和文件指针,FILE *fp; fp=fopen(“a.txt”,“r”); fclose(fp);,返回值:用于表示文件是否被正确地关闭,如果文件顺利关闭,该值为0,否则为-1(EOF)。 返回值可以用ferror函数测试,10.3 文件的读写 1、读写文件中的一个字符 fputc函数(putc函数
6、) 函数原型:int fputc(int c, FILE *fp) 功能:把一字节代码c写入fp指向的文件中 返值:正常,返回c;出错,为EOF(-1),fgetc函数(getc函数) 函数原型:int fgetc(FILE *fp) 功能:从fp指向的文件中读取一字节代码 返值:返回读到的代码值;读到文件尾或出错为EOF(-1),feof函数 调用方式:feof(fp) 功能:对于二进制文件读取时判断文件是否结束。 返值:结束-1;反之0。,文件指针变量,文件指针变量,例10.1 从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个“#”为止。,#include #include voi
7、d 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(); /*第一个输入的字符被赋给变量ch*/while(ch!=#) fputc(ch,fp); /*字符被写入filename表示的文件中*/putchar(ch); /*字符被输出到显示器*/ch=getchar();putc
8、har(10); /*向屏幕输出一个换行符*/fclose(fp); /*关闭文件*/,例10.2 将一个磁盘文件中的信息复制到另一个磁盘文件中。,#include #include void main() FILE *in, *out;char ch,infile10,outfile10;printf(“Enter the infile name:n“);scanf(“%s“,infile); /*输入文件的文件名*/printf(“Enter the outfile name:n“);scanf(“%s“,outfile); /*输出文件的文件名*/if (in = fopen(infil
9、e, “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); ,2、数据块输入输出函数:fread与fwrite 一般调用形式: fread(buffer,size,count,fp ); fwrite(buffer,size,count,fp ); 参数说明: buf
10、fer: 要读入的数据块的存放首地址或要输出的数据块的起始地址。 size: 每个要读/写的数据块的大小(字节数) count: 要读/写的数据块的个数 fp: 要读/写的文件指针 返值:成功,返count的值;出错或文件尾,0值。fread与fwrite 一般用于二进制文件的输入/输出,#include #define SIZE 4 struct student_type char name10;int num;int age;char addr15; studSIZE; void main() int i;for(i=0;iSIZE;i+)scanf(“%s%d%d%s“,studi.na
11、me, ,例10.4 从键盘输入4个学生的数据,然后转存到磁盘上,并在屏幕上显示磁盘文件的内容。,void save() FILE *fp;int i;if(fp=fopen(“d:stu_list“,“wb“)=NULL) printf(“cannot open filen“);return;for(i=0;iSIZE;i+)if(fwrite( ,文件必须是以“二进制”打开的,void display() FILE *fp;int i;if(fp=fopen(“d:stu_list“,“rb“)=NULL) printf(“cannot open filen“); return;for(i
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 文件 PPT
