版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 第14讲 文件操作本讲主要内容n 文件的概念n 文件类型指针n 文件的打开与关闭n 文件的读写2 问题:x=10,y=x+3,y=?a=10a=10;制定算法输入计算执行指令保存程序输出程序执行过程程序执行过程暂存数据磁盘读写3 14.1 文件的概念p文件文件(file)(file):记录在磁盘上的数据集合,以文件名作为访问:记录在磁盘上的数据集合,以文件名作为访问标识标识p类型类型按文件所依附的介质来分:有按文件所依附的介质来分:有磁盘文件磁盘文件、磁带文件等、磁带文件等按文件内容区分:源程序文件、目标文件、按文件内容区分:源程序文件、目标文件、数据文件数据文件等等按数据编码格式区分:数
2、据文件可分为按数据编码格式区分:数据文件可分为ASCII码文件和二码文件和二进制文件进制文件4 pASCIIASCII码文件码文件: :又称为又称为“文本文件文本文件”(text)(text),其每一个字节,其每一个字节存放一个存放一个ASCIIASCII码。优点:可编辑性好码。优点:可编辑性好p二进制文件二进制文件: :又又称称“内存映像内存映像”文件文件,文件中每个数据格式,文件中每个数据格式与其在内存中存储结构相同。与其在内存中存储结构相同。优点:节省存储空间优点:节省存储空间5 p缓冲文件系统:操作系统在内存中为每一个正在使用的文缓冲文件系统:操作系统在内存中为每一个正在使用的文件开辟
3、一个读写缓冲区,又称为高级文件系统件开辟一个读写缓冲区,又称为高级文件系统p非缓冲文件系统:操作系统不开辟读写缓冲区。由用户来非缓冲文件系统:操作系统不开辟读写缓冲区。由用户来开辟,称为低级文件系统开辟,称为低级文件系统6 14.2 文件类型指针p应用程序调用应用程序调用缓存文件系统中的某文件,需要以下信息文件,需要以下信息与该文件对应的内存缓冲区的地址与该文件对应的内存缓冲区的地址缓冲区中未被处理的字符串缓冲区中未被处理的字符串文件操作方式等文件操作方式等 文件当前的读写位置文件当前的读写位置p缓冲文件系统会为每个文件设立一个“文件信息区”,在stdio.h中,它被定义为FILE类型数据 t
4、ypedef struct int _fd; /文件号文件号 int _cleft; / 缓冲区中剩下的字节数缓冲区中剩下的字节数 int _mode; / 文件操作模式文件操作模式 char * _nextc; /下一个字节的位置下一个字节的位置 char * _buff;/文件缓冲区位置文件缓冲区位置 FILE;7 14.3 文件的打开与关闭p磁盘文件操作的磁盘文件操作的3 3部曲部曲 先打开先打开 后读写后读写 最后关闭最后关闭p打开文件:以打开文件:以某种方式某种方式从磁盘上从磁盘上查找或创建查找或创建指定文件,并获指定文件,并获取该文件的取该文件的FILEFILE类型类型数据数据 F
5、ILE *fopen(const char *filename,const char *mode;);)p其中,其中,filename: filename: 文件名;文件名;mode: mode: 打开方式见下表,打开方式见下表,FILE FILE * *:返回值:返回值 如:如:FILE FILE * *fp; fp=fopen(“file1fp; fp=fopen(“file1.txt”.txt”, , “r r”); ); p如果成功打开,返回一个指向被打开文件的文件信息区的起如果成功打开,返回一个指向被打开文件的文件信息区的起始地址;如果打开失败,返回一个始地址;如果打开失败,返回一个
6、NULLNULL指针指针8 14.3 文件的打开与关闭文件打开方式含义r(只读)为输入打开一个文本文件w(只写)为输出打开一个文本文件a(追加)为追加打开一个文本文件rb(只读)为输入打开一个二进制文件wb(只写)为输出打开一个二进制文件ab(追加)为追加打开一个二进制文件r+(读写)为读写打开一个文本文件(已有)w+(读写)为读写创建一个文本文件(能创建)a+(读写)为读写打开一个文本文件rb+(读写)为读写打开一个二进制文件wb+(读写)为读写创建一个二进制文件ab+(读写)为读写打开一个二进制文件9 14.3 文件的打开与关闭p关闭文件的作用:关闭文件的作用:()使文件指针()使文件指针
7、fpfp与文件脱离与文件脱离()刷新文件输入输出缓冲区()刷新文件输入输出缓冲区p关闭方法:关闭方法:fclose(fp);fclose(fp);10 14.4 文件的读写pfputc()/fgetc()fputc()/fgetc()int fputc(int c, FILE int fputc(int c, FILE * *fp)fp); ; 把字符把字符c c写入文件写入文件fpfp,成功时返回字符,成功时返回字符c c的的ASCIIASCII码码. .失败时返回失败时返回EOF(EOF(在在stdio.hstdio.h中,符号常量中,符号常量EOFEOF的值等于的值等于-1)-1)int
8、 fgetc(FILE int fgetc(FILE * *fp)fp); ; 从文件从文件fpfp中读中读1 1个字符,个字符,返回读得的字符。对文本文件,遇文件尾时返回返回读得的字符。对文本文件,遇文件尾时返回EOFEOF(文件打开方式是读或读写)(文件打开方式是读或读写)p对于二进制文件,可以用对于二进制文件,可以用feof(fp) feof(fp) 判别是否遇文件尾。判别是否遇文件尾。feof(fp)=1feof(fp)=1说明遇文件尾说明遇文件尾11 从文本文件从文本文件test.txttest.txt中顺序读入内容,并在屏幕上显示出来中顺序读入内容,并在屏幕上显示出来12 从键盘输
9、入一些字符,逐个把它们写入磁盘文件,直到输入从键盘输入一些字符,逐个把它们写入磁盘文件,直到输入# #为止为止13 例、将一个磁盘文件的内容复制到另一个磁盘文件14 14.4 文件的读写pfread()读读文件(块读)文件(块读)size_t fread(void *buffer, size_t size, size_t count, FILE *fp);从文件从文件fp中读入中读入count次、每次读次、每次读size字节、读入的信息存在字节、读入的信息存在buffer缓冲区。函数返回值等于实际读入的次数(可能少于缓冲区。函数返回值等于实际读入的次数(可能少于count)。失败返回)。失败返
10、回0pfwrite()写写文件(块写)文件(块写)size_t fwrite(void *buffer, size_t size, size_t count, FILE *fp);将将buffer中中的信息、写入的信息、写入count次、每次写次、每次写size字节至文件字节至文件fp中。函数返回值等于实际写入的次数(可能少于中。函数返回值等于实际写入的次数(可能少于count)。失)。失败返回败返回015 例、从键盘上输入一批学生数据,然后存储到磁盘上16 14.4 文件的读写p其它读写磁盘函数其它读写磁盘函数fprintf()fsacnf()函数(格式读写)函数(格式读写) fprintf
11、(文件指针,格式控制,变量列表文件指针,格式控制,变量列表); fscanf (文件指针,格式控制,变量地址列表文件指针,格式控制,变量地址列表); 除增加除增加“文件指针文件指针”外,与外,与printf()scanf()用法相同用法相同int putw(int w, FILE *fp) ; 将整数将整数w写入文件写入文件fp中中int getw(FILE *fp) ; 从文件从文件fp中中读一个整数读一个整数char * fgets(char *str, int n, FILE *fp); 从文件从文件fp读读n-1个字节到个字节到str,str最后一个字节加最后一个字节加0int fpu
12、ts(const char *str, FILE *fp) 把把str写入写入fp17 14.5 文件的定位p文件指针文件指针FILE FILE * *fpfp中,包含一个读写位置指针中,包含一个读写位置指针char char * *_nextc_nextc,它指向下一次文件读写的位置,它指向下一次文件读写的位置 typedef struct typedef struct int _fd; int _fd; / /* * 文件号文件号 * */ /int _cleft; int _cleft; / /* * 缓冲区中剩下的字节数缓冲区中剩下的字节数 * */ /int _mode; int _
13、mode; / /* * 文件操作模式文件操作模式 * */ /char char * * _nextc; / _nextc; /* * 下一个字节的位置下一个字节的位置 * */ /char char * * _buff; _buff;/ /* *文件缓冲区位置文件缓冲区位置 * */ /FILE; FILE; p每当进行一次读写后,该指针自动指向下一次读写的位置每当进行一次读写后,该指针自动指向下一次读写的位置p 当文件刚打开或创建时,该指针指向文件的开始位置当文件刚打开或创建时,该指针指向文件的开始位置p 可以用函数可以用函数ftell()获得当前的位置指针,也可以用获得当前的位置指针,
14、也可以用rewind()fseek()函数改变位置指针,使其指向需要读写的位置函数改变位置指针,使其指向需要读写的位置p原型原型:long ftell (FILE *fp);功能功能: 获得文件获得文件fp的当前位置指针。若返回的当前位置指针。若返回-1则失败则失败18 14.5 文件的定位p原型:原型:void rewind(FILE void rewind(FILE * *fp)fp)作用:使文件作用:使文件fpfp的位置指针指向文件开始的位置指针指向文件开始例、把一个文件的内容显示在屏幕上,并同时复制到另一个文件例、把一个文件的内容显示在屏幕上,并同时复制到另一个文件19 14.5 文件
15、的定位p原型:原型:int fseek (FILE *fp, long offset, int origin);功能:把文件功能:把文件fp的位置指针从起始点的位置指针从起始点origin开始,移开始,移动动offset字节。成功返回当前位置,失败返回非字节。成功返回当前位置,失败返回非-1。起始点origin符号常量值文件开始位置SEEK_SET0当前位置SEEK_CUR1文件尾SEEK_END220 例、在磁盘文件例、在磁盘文件stud_datstud_dat上,存有上,存有1010个学生个学生(0(09)9)的数据,读出的数据,读出1 1、3 3、5 5、7 7、9 9号学生数据,并在屏幕上显示出来号学生数据,并在屏幕上显示出来21 请分析该程序运行的结果?22 请分析该程序运行的结果?pint fflush( FILE *fp)的功能是清空文件的输入输出缓冲区流,出错返回-1L23 scanf()cingetchar()gets()printf()coutputchar()put
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026-2032中国低温银浆市场现状研究分析与发展前景预测报告 djs
- 智慧灯杆温度监测施工方案及技术措施
- 26照明拖鞋(教学设计)-青岛版科学五年级下册
- 3.3气压带和风带对气候的影响 (1)教学设计高中地理人教版(2019)选择性必修一
- 框架结构后浇带施工方案
- 2025-2026学年认识病毒教案小半
- 2025-2026学年平均数杨重生教学设计
- 2025-2026学年小鹿儿歌教案小班
- 市人民医院重大问题请示报告制度
- (2026年)三年级下学期数学教研组的工作计划
- 养生茶日常知识培训课件
- 无人机飞行控制技术第一章 无人机飞行控制概述
- 《汽车电气设备构造与维修》试题库(附答案)
- 《四级词汇词根 联想记忆法(乱序版)》
- 光伏发电站施工作业指导手册与工程实践案例分析
- 燃气公司部门及安全教育安全生产管理人员考试试题与答案
- 专科护理门诊管理办法
- 企业内部控制制度检查表模板
- 设备振动基础知识培训课件
- 2025年新版《医疗器械经营质量管理规范》培训试题(附答案)
- 化工厂巡检基础知识培训课件
评论
0/150
提交评论