资源描述:
《第十章 文件与数据存储》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、第十章文件与数据存储学习目标掌握文件的基本概念学会使用常用的文件操作函数进行文件读写会使用文件存储、访问和管理数据10.1文件的基本概念数据的保存与持久化在程序结束时数据仍有效文件的定义一组相关信息的集合存储于某种存储介质上具有某种特定格式,其中的信息也具有相同的含义,需要用不同的方法存取文件结构体与文件指针文件的类型顺序文件与随机文件顺序文件:只能顺序访问其中的信息例:存储在磁带上的文件只能顺序访问随机文件:可以随机访问文件的任一部分信息,可以指定读写位置二进制文件与文本文件文本文件:信息以字符形式存储,有分行信息,阅读目标为程序员与程序二进制文件:文件以二
2、进制码存储,无分行信息,阅读目标为程序10.2基本文件操作文件打开与关闭操作FILE*fopen(constchar*filename,constchar*mode);intfclose(FILE*fp);文件状态与缓冲区操作intfeof(FILE*fp);intfflush(FILE*fp);文件指针操作voidrewind(FILE*fp);intfseek(FILE*fp,longoffset,intfromwhere);longftell(FILE*fp);10.2基本文件操作文件读写操作intfprintf(FILE*fp,constchar*fm
3、t,…);intfscanf(FILE*fp,constchar*fmt,…);intfgetc(FILE*fp);char*fgets(char*str,intn,FILE*fp);intputc(intch,FILE*fp);charfputs(char*str,FILE*fp);intfread(void*buf,intsize,intcount,FILE*fp);intfwrite(void*buf,intsize,intcount,FILE*fp);文件打开操作函数原型FILE*fopen(constchar*filename,constchar*m
4、ode);返回值调用成功返回文件指针,失败返回NULL函数参数filename:文件名字符串,可以包含路径名mode:文件打开模式文件打开模式mode:文件打开模式r:读,若文件不存在,返回NULLw:写,若文件不存在,创建,若已存在,删除a:追加,若文件不存在,创建,若已存在,添加到文件尾部r+、w+:读写,若文件不存在,创建,若已存在,覆盖a+:读与追加,若文件不存在创建,若已存在,覆盖b:二进制格式示例“rb”:读模式打开二进制文件“w+”:读写模式打开文本文件文件打开示例文件打开应用#include#include
5、intmain(){FILE*fp;charfilename[40],mode[4];while(1){/*输入文件名和打开方式*/printf(“Enterafilename:“);gets(filename);/*输入文件名*/printf(“Enteramode(max3characters):“);gets(mode);/*输入打开方式*/…文件打开示例/*打开文件*/if((fp=fopen(filename,mode))!=NULL){printf(“Successfulopening%sinmode%s.“,filename,mo
6、de);/*输出成功信息*/fclose(fp);/*关闭文件*/}else{fprintf(stderr,“Erroropeningfile%sinmode%s.“,filename,mode);/*输出不成功信息*/}/*询问是否结束*/puts(“Enterxtoexit,anyothertocontinue.“);if((getc(stdin))==‘x‘)break;elsecontinue;}}预定义的标准文件标准文件:输入输出流stdin:标准输入设备,一般为键盘stdout:标准输出设备,一般为屏幕stderr:标准错误输出设备,一般为
7、屏幕stdprn:标准打印设备,一般为缺省打印机stdaux:标准文件关闭操作函数原型关闭单个文件:intfclose(FILE*fp);关闭除标准文件之外的所有文件:intfcloseall();文件缓冲区外部块设备与内部数据流间的接口(中转站)清理文件缓冲区:intfflush(FILE*fp);清理所有文件的缓冲区:intfflushall();文件关闭示例将磁盘文件中的信息复制到新文件中#includevoidmain(){FILE*in,*out;charinname[12],outname[12];scanf(“%s”,innam
8、e);scanf(“%s”,outna