(精品)c语言电子教案13

上传人:无*** 文档编号:252955100 上传时间:2024-11-26 格式:PPT 页数:28 大小:264KB
返回 下载 相关 举报
(精品)c语言电子教案13_第1页
第1页 / 共28页
(精品)c语言电子教案13_第2页
第2页 / 共28页
(精品)c语言电子教案13_第3页
第3页 / 共28页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,UNIX C,编程,yyyy-M-,P,age *,第,13,章 文件,知识点:,各种读写操作,指针操作,重点:,各种读写操作,13.1 C,文件概述,文件:存储在外部介质上数据的集合,是操作系统数据管理的单位,文件分类,按文件的逻辑结构:,记录文件:由具有一定结构的记录组成(定长和不定长),流式文件,:由一个个字符(字节)数据顺序组成,按存储介质:,普通文件:存储介质文件(磁盘、磁带等),设备文件,:非存储介质(键盘、显示器、打印机等),按数据的组织形式:,文本文件,:,ASCII,文件,每个字节存放一个字符的,ASCII,码,二进制文件,:数据按其在内存中的存储形式原样存放,13.1 C,文件概述,文本文件与二进制文件的区别,文本文件特点,:,存储量大、速度慢、便于对字符操作,二进制文件特点,:,存储量小、速度快、便于存放中间结果,十进制,10000,“1”,的,ASCII,码,49,“0”,的,ASCII,码,48,13.1 C,文件概述,文件处理方法,缓冲文件系统,:,高级,文件系统,系统自动为正在使用的文件开辟内存缓冲区,非缓冲文件系统,:低级文件系统,由用户在程序中为每个文件设定缓冲区,13.1 C,文件概述,读文件与写文件,读文件:磁盘文件中的数据传送到计算机内存的操作。,写文件:从计算机内存向磁盘文件中传送数据的操作。,FILE,类型,缓冲文件系统为每个正使用的文件在内存开辟文件信息区,文件信息用系统定义的名为,FILE,的结构体描述,FILE,定义在,stdio.h,中,13.1 C,文件概述,typedef,struct,short level;/*,缓冲区满或空的程度*,/,unsigned flags;/*,文件状态标志,*/,char,fd,;/*,文件描述符,*/,unsigned char hold;/*,如无缓冲区不读取字符*,/,short,bsize,;/*,缓冲区的大小,*/,unsigned char*buffer;/*,数据缓冲区的位置,*/,unsigned char*,curp,;/*,指针,当前的指向*,/,unsigned,istemp,;/*,临时文件,指示器*,/,short token;/*,用于有效性检查*,/,FILE;,13.1 C,文件概述,定义文件类型指针,FILE*,fp,;,fp,指向存放已打开文件的文件信息的结构体变量。,简称,fp,指向已打开的文件,13.2,文件的打开与关闭,文件使用方式,:,打开文件,-,文件读,/,写,-,关闭文件,C,文件操作用,库函数,实现,包含在,stdio.h,系统,自动,打开和关闭三个,标准文件,:,标准输入-,键盘,stdin,标准输出-,显示器,stdout,标准出错输出-显示器,stderr,打开文件,fopen,函数原型:,FILE *,fopen(char,*,name,char,*mode);,用法:,FILE *,fopen,(,文件名,使用文件方式,);,功能:返回一个指向指定文件的指针。,返值:正常打开,为指向文件结构体的指针;,打开失败,为,NULL,13.2,文件的打开与关闭,13.2,文件的打开与关闭,使用文件方式,文件使用方式,含义,“,r/rb,”(,只读,),为输入打开一个文本,/,二进制文件,“,w/wb,”(,只写,),为输出打开或建立一个文本,/,二进制文件,“,a/,ab,”(,追加,),向文本,/,二进制文件尾追加数据,“,r+/rb,+”(,读写,),为读,/,写打开一个文本,/,二进制文件,“,w+/wb,+”(,读写,),为读,/,写建立一个文本,/,二进制文件,“,a+/,ab,+”(,读写,),为读,/,写打开一个文本,/,二进制文件,文件打开时,系统,自动,建立文件结构体变量,并返回指向它的指针,13.2,文件的打开与关闭,为增强程序的可靠性,常用下面的方法打开一个文件,FILE*,fp,;,if(,fp,=,fopen,(,文件名,使用方式,)=NULL),printf(Can,not open this filen);,exit(0);,例:,FILE*,fp,;,char*filename=,c:test.dat,*read=r;,fp,=,fopen(filename,read,);,/*OR,fp,=,fopen(c:test.dat,r,);*/,关于,exit(),函数,1,)用法:,void exit(,程序状态值,);,2,)功能:关闭已打开的所有文件,结束程序运行,返回操作系统,并将“程序状态值”返回给操作系统。当“程序状态值”为,0,时,表示程序正常退出;非,0,值时,表示程序出错退出。,13.2,文件的打开与关闭,关闭文件,函数原型:,int,fclose(FILE,*,fp,),功能:关闭,fp,指向的文件,返值:正常关闭为,0,;出错时,非,0,先把缓冲区中的数据输出到磁盘文件,然后才释放文件指针变量,防止数据缓冲区内的数据丢失。,13.3,文件的读写,字符的读写,f,putc,函数原型:,int,fputc(int,ch,FILE*,fp,),功能:把一字符,ch,写入,fp,指向的文件中,同时将读写位置指针向前移动,1,个字节(即指向下一个写入位置),返值:正常,返回,ch,;,出错,为,EOF,(其值在头文件,stdio.h,中,被定义为,-1,),fgetc,函数原型:,int,fgetc(FILE,*,fp,),功能:从,fp,指向的文件中读取,一字符,,同时将读写位置指针向前移动,1,个字节(即指向下一个写入位置)。,返值:正常,返回读到的代码值;读到文件尾或出错,为,EOF,feof,(),函数原型:,int,feof(FILE,*,fp,),功能:判断文件是否结束,返值:文件结束,返回真(非0);文件未结束,返回0,13.3,文件的读写,例:从键盘输入字符,逐个存到磁盘文件中,直到输入,#,为止。,#include,main(),FILE*,fp,;,char ch,filename10;,printf(Please,input filename:);,scanf(%s,filename,);/*,输入,out.txt,*/,if(fp,=,fopen(filename,w,)=NULL),printf(cannot,open filen);exit(0);,printf(Please,input string:);,ch,=,getchar,();,while(ch,!=#),fputc(ch,fp,);,putchar(ch,);,ch,=,getchar,();,fclose(fp,);,例:输出文本文件的内容,#include,main(),FILE*,fp,;,char,ch,*filename=,out.txt,;,if(fp,=,fopen(filename,r,)=NULL),printf(cannot,open filen);,exit(0);,while(,ch,=,fgetc(fp,),)!=,EOF,),putchar(ch,);,fclose(fp,);,例:复制文本文件,#include,main(),FILE*in,*out;,char ch,readfile10,writefile10;,scanf(%s,readfile,);,scanf(%s,writefile,);,if(in=,fopen(readfile,r,)=NULL),printf(Cannot,open,readfile.n,);,exit(0);,if,(out=,fopen(writefile,w,)=NULL,),printf(Cannot,open,writefile.n,);,exit(0);,while(!,feof(in,),fputc(fgetc(in,),out);,fclose(in,);,fclose(out,);,13.3,文件的读写,字符串的读写,函数原型:,char *,fgets(char,*,s,int,n,FILE,*,fp,),int,fputs(char,*,s,FILE,*,fp,),功能:从,fp,指向的文件读/写一个字符串,返值:,fgets,正常时返回读取字符串的首地址;出错或文件尾,返回,NULL,fputs,正常时返回写入的最后一个字符;出错为,EOF,fgets,从,fp,所指文件读,n-1,个字符送入,s,指向的内存区,并在最后加一个0(若读入,n-1,个字符前遇换行符或文件尾,EOF,即结束),13.3,文件的读写,例:,从键盘按格式输入数据存到磁盘文件中去,再从文件读回显示。,#include,main(),FILE *,fp,;,char string81;,if(,fp,=,fopen(file.txt,w,)=NULL,),printf(cannt,open file);exit(0);,while(strlen(gets(string,)0),fputs(string,fp,);,fputs(n,fp,);,/*,完成多行字符串*,/,fclose(fp,);,if(,fp,=,fopen(file.txt,r,)=NULL,),printf(cannt,open file);exit(0);,while(,fgets(string,81,fp)!=NULL,),fputs(string,stdout,);,fclose(fp,);,13.3,文件的读写,数据块的读写,函数原型:,int,fread(void,*,buffer,int,size,int,count,FILE,*,fp,),int,fwrite(void,*,buffer,int,size,int,count,FILE,*,fp,),功能:读,/,写数据块,返值:成功,返回读,/,写的块数;出错或文件尾,返回,0,说明:,buffer,:指向要输入,/,输出数据块的首地址的指针,size,:每个要读,/,写的数据块的大小(字节数),count,:要读,/,写的数据块的个数,fp,:要读,/,写的文件指针,fread,与,fwrite,一般用于,二进制文件,的输入,/,输出,13.3,文件的读写,例,float f2;,FILE *,fp,;,fp,=,fopen(“aa.dat”,“,rb,”);,fread(f,4,2,fp);,for(i,=0;i2;i+),fread(,struct,student,int,num;,char name20;,char sex;,int,age;,float score3;,stud10;,for(i,=0;i10;i+),fread(&studi,sizeof(struct,student),1,fp);,13.3,文件的读写,例,从键盘输入,4,个学生数据,把他们转存到磁盘文件中去。,#include,#define SIZE 4,struct,student_type,char name10;,int,num;,int,age;,char addr15;,studSIZE,;,main(),int,i;,for(i,=0;i,SIZE;i,+),scanf(%s%d%d%s,studi.name,&,studi.num,&,studi.age,studi.addr,);,save();,display();,void save(),FILE*,fp,;,int,i;,if(fp,=,fopen(d:tcstu_dat,wb,)=NULL),printf(cannot,open file,n);return,;,for(i,=0;i,SIZE;i,+),if(fwrite(&studi,sizeof(struct,student_type),1,fp)!=
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!