收藏 分享(赏)

第13章 文 件.ppt

上传人:天天快乐 文档编号:1140640 上传时间:2018-06-14 格式:PPT 页数:22 大小:413.50KB
下载 相关 举报
第13章 文 件.ppt_第1页
第1页 / 共22页
第13章 文 件.ppt_第2页
第2页 / 共22页
第13章 文 件.ppt_第3页
第3页 / 共22页
第13章 文 件.ppt_第4页
第4页 / 共22页
第13章 文 件.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、第十三章 文 件,什么是数据文件,为什么使用数据文件,如何使用数据文件,本章学习目标,理解文本文件和二进制文件的区别; 理解 FILE *fp 文件指针; 能够用函数fopen和fclose打开和关闭文件; 掌握常用的文件读/写函数;,13.1 C文件概述,文件:文件是存储在外部介质上数据的集合。,使用数据文件的目的1、数据文件的改动不引起程序的改动程序与数据分离。2、不同程序可以访问同一数据文件中的数据数据共享。3、能长期保存程序运行的中间数据或结果数据。,13.1 C文件概述, C 语言文件分为ASCII文件和二进制文件ASCII文件:也称文本文件,每个字节存放一个字符的ASCII码。二进

2、制文件:数据按其在内存中的存储形式原样存放。,13.1 C文件概述,文本文件特点:存储量大、速度慢、便于对字符操作,二进制文件特点:存储量小、速度快、便于存放中间结果,13.2 文件类型指针, 文件结构体类型 FILE每个正在使用的文件在内存中都拥有一个文件信息区。文件信息用系统定义的名为FILE的结构体描述。FILE定义在 stdio.h 中,typedef struct int _fd; /文件号 int _cleft; /缓冲区中剩下的字符数 int _mode; /文件操作方式 char *_next; /文件当前读写位置 char *_buff; /文件缓冲区位置FILE;,13.2

3、 文件类型指针, 文件类型指针定义:FILE *fp ;文件使用方式:打开文件-文件读/写-关闭文件,FILE *文件指针名,在stdio.h中定义的一种结构,可看作类型说明符,文件指针名,经过定义的文件指针,就可以用来指向一个文件!,13.3 文件的打开与关闭, 打开文件 fopen( ),FILE *fp; fp=fopen(“文件名”,“打开方式”);,例:FILE *fp; fp=fopen(“d:usermyfile.txt”,”r”);,为什么 ,Read,13.3 文件的打开与关闭,fopen( )的返回值:正常打开,返回指向文件结 构体的指针;打开失败,返回 NULL。,FIL

4、E *fp;fp=fopen(“aa.c”,“w”);if(fp=NULL) printf(“File open error!n”); exit(0);,13.3 文件的打开与关闭,r:读方式;w:写方式;b:二进制方式;a:追加方式;+:既可读又可写,r 只读 出错 正常,w 只写 建立新文件 覆盖原内容,a 追加 建立新文件 在原内容后追加,r+/w+ 读写 出错 正常,13.3 文件的打开与关闭, 文件的关闭 fclose( ),FILE *fp; fp=fopen(“a.txt”,“r”);fclose(fp);,fclose( )的返回值:用于表示文件是否被正确地关闭,如果文件顺利关

5、闭,该值为0,否则为-1(EOF)。,13.4 文件的读写,文件打开之后,就可以对它进行读与写的操作了。13.4.1 读写文件中的一个字符 fgetc() fputc()13.4.2 读写一个数据块 fread() fwrite()13.4.3 对文件进行格式化读写 fscanf() fprintf()13.4.4 读写一个字符串 fgets() fputs(),13.4 文件的读写,读入单字符的函数fgetc( )格式: ch=fgetc(fp);功能:从指定的文件读入一个字符说明: fp是文件型指针变量 ch是字符变量,FILE *fp; fp=fopen(“a.txt”,“r”); ch

6、=fgetc(fp); while(ch!=EOF) putchar(ch); ch=fgetc(fp); fclose(fp);,EOF文件结束标志,例13.1 从键盘输入一些字符,逐个把它们送到文件中,直到输入一个“ # ”为止。,#include void main() FILE *fp; char ch ; if(fp=fopen(“out.txt”,w)=NULL) printf(cannot open filen); exit(0); printf(Please input string:); ch=getchar(); /*输入的字符被赋给变量ch*/ while(ch!=#)

7、fputc(ch,fp); /*字符被写入out.txt文件*/ putchar(ch); /*字符被输出到显示器*/ ch=getchar(); fclose(fp); /*关闭文件*/,13.4 文件的读写,写入数据块的函数 fwrite( )格式:fwrite(buffer,size,count,fp );功能:向指定文件写入一组数据(实数或结构体变量)说明: buffer: 写数据的存放的首地址 size: 每次要写的字节数 count: 写次数 fp: 文件指针,struct student int num; float score3; stud10; for(i=0;i10;i+)

8、 fwrite(,文件必须是以“二进制”打开的,例13.3 从键盘输入4个学生有关数据,把他们转存到磁盘文件中去,#include #define SIZE 4struct 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.name,void save() FILE *fp; int i; if(fp=fopen(d:stu_list,wb)=NULL) printf(cannot open file

9、n); return; for(i=0;iSIZE;i+) fwrite(,void display() FILE *fp; int i; if(fp=fopen(d:stu_list,rb)=NULL) printf(cannot open filen); return; for(i=0;iSIZE;i+) fread(,13.4 文件的读写,按格式对文件进行读/写的函数 fscanf( ) fprintf()格式: fscanf(fp,格式,输入列表 ); fprintf(fp,格式,输出列表 );,fscanf( fp,“%d,%f”, /*将i和t按 %d, %6.2f 格式写入到 f

10、p文件*/,void save() FILE *fp; int i; if(fp=fopen(d:stu_list,w)=NULL) printf(cannot open filen); return; for(i=0;iSIZE;i+) fprintf(fp,%s %d %d %s,studi.name, studi.num,studi.age,studi.addr); fclose(fp);,void display() FILE *fp; int i; if(fp=fopen(d:stu_list,r)=NULL) printf(cannot open filen); return; f

11、or(i=0;iSIZE;i+) fscanf(fp,%s %d %d %s,studi.name, ,小 结,在使用文件时,首先要定义一个文件指针: FILE *fp;然后通过该指针来操作相应的文件;通过fopen这个函数,使文件指针fp和相应的文件建立了联系,通过fclose函数将fp和文件的联系切断;文件可以以文本的方式打开(默认或“t”),也可以以二进制方式打开(“b”);,小 结,如果以一次一个字符的方式处理文件,需要用fgetc或者fputc函数;如果以一次一个结构体的方式处理文件,可以用函数fread和fwrite(多为二进制文件);fscanf和fprintf函数使用很广泛,应重点掌握。,THE END,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报