计算机程序设计:第14讲 文件操作

上传人:努力****83 文档编号:190471700 上传时间:2023-02-27 格式:PPT 页数:24 大小:3.79MB
收藏 版权申诉 举报 下载
计算机程序设计:第14讲 文件操作_第1页
第1页 / 共24页
计算机程序设计:第14讲 文件操作_第2页
第2页 / 共24页
计算机程序设计:第14讲 文件操作_第3页
第3页 / 共24页
资源描述:

《计算机程序设计:第14讲 文件操作》由会员分享,可在线阅读,更多相关《计算机程序设计:第14讲 文件操作(24页珍藏版)》请在装配图网上搜索。

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类型数据 typed

4、ef struct int _fd;/文件号文件号 int _cleft;/缓冲区中剩下的字节数缓冲区中剩下的字节数 int _mode;/文件操作模式文件操作模式 char*_nextc;/下一个字节的位置下一个字节的位置 char*_buff;/文件缓冲区位置文件缓冲区位置 FILE;7 14.3 文件的打开与关闭p磁盘文件操作的磁盘文件操作的3 3部曲部曲 先打开先打开 后读写后读写 最后关闭最后关闭p打开文件:以打开文件:以某种方式某种方式从磁盘上从磁盘上查找或创建查找或创建指定文件,并获指定文件,并获取该文件的取该文件的FILEFILE类型类型数据数据 FILE*fopen(cons

5、t 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如果成功打开,返回一个指向被打开文件的文件信息区的起如果成功打开,返回一个指向被打开文件的文件信息区的起始地址;如果打开失败,返回一个始地址;如果打开失败,返回一个NULLNULL指针指针8 14.3 文件的打开与关闭文件打开方式含

6、义r(只读)为输入打开一个文本文件w(只写)为输出打开一个文本文件a(追加)为追加打开一个文本文件rb(只读)为输入打开一个二进制文件wb(只写)为输出打开一个二进制文件ab(追加)为追加打开一个二进制文件r+(读写)为读写打开一个文本文件(已有)w+(读写)为读写创建一个文本文件(能创建)a+(读写)为读写打开一个文本文件rb+(读写)为读写打开一个二进制文件wb+(读写)为读写创建一个二进制文件ab+(读写)为读写打开一个二进制文件9 14.3 文件的打开与关闭p关闭文件的作用:关闭文件的作用:()使文件指针()使文件指针fpfp与文件脱离与文件脱离()刷新文件输入输出缓冲区()刷新文件输

7、入输出缓冲区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 fgetc(FILE int fgetc(FILE*fp)fp);从文件从文件fpfp

8、中读中读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)。失败返回)。失败返回0pfwrite()写写文件(块写)文件(块写)size_t fwrite(void*buffer,size_t s

10、ize,size_t count,FILE*fp);将将buffer中中的信息、写入的信息、写入count次、每次写次、每次写size字节至文件字节至文件fp中。函数返回值等于实际写入的次数(可能少于中。函数返回值等于实际写入的次数(可能少于count)。失)。失败返回败返回015 例、从键盘上输入一批学生数据,然后存储到磁盘上16 14.4 文件的读写p其它读写磁盘函数其它读写磁盘函数fprintf()fsacnf()函数(格式读写)函数(格式读写)fprintf(文件指针,格式控制,变量列表文件指针,格式控制,变量列表);fscanf(文件指针,格式控制,变量地址列表文件指针,格式控制,变

11、量地址列表);除增加除增加“文件指针文件指针”外,与外,与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 fputs(const char*str,FILE*fp)把把str写入写入fp17 14.5 文件的定位p文件指针文件指针FILE FILE*fpfp中,包含一个读写位

12、置指针中,包含一个读写位置指针char char*_nextc_nextc,它指向下一次文件读写的位置,它指向下一次文件读写的位置 typedef struct typedef struct int _fd;int _fd;/*文件号文件号 */int _cleft;int _cleft;/*缓冲区中剩下的字节数缓冲区中剩下的字节数 */int _mode;int _mode;/*文件操作模式文件操作模式 */char char*_nextc;/_nextc;/*下一个字节的位置下一个字节的位置 */char char*_buff;_buff;/*文件缓冲区位置文件缓冲区位置 */FILE;F

13、ILE;p每当进行一次读写后,该指针自动指向下一次读写的位置每当进行一次读写后,该指针自动指向下一次读写的位置p 当文件刚打开或创建时,该指针指向文件的开始位置当文件刚打开或创建时,该指针指向文件的开始位置p 可以用函数可以用函数ftell()获得当前的位置指针,也可以用获得当前的位置指针,也可以用rewind()fseek()函数改变位置指针,使其指向需要读写的位置函数改变位置指针,使其指向需要读写的位置p原型原型:long ftell(FILE*fp);功能功能:获得文件获得文件fp的当前位置指针。若返回的当前位置指针。若返回-1则失败则失败18 14.5 文件的定位p原型:原型:void

14、 rewind(FILE void rewind(FILE*fp)fp)作用:使文件作用:使文件fpfp的位置指针指向文件开始的位置指针指向文件开始例、把一个文件的内容显示在屏幕上,并同时复制到另一个文件例、把一个文件的内容显示在屏幕上,并同时复制到另一个文件19 14.5 文件的定位p原型:原型:int fseek(FILE*fp,long offset,int origin);功能:把文件功能:把文件fp的位置指针从起始点的位置指针从起始点origin开始,移开始,移动动offset字节。成功返回当前位置,失败返回非字节。成功返回当前位置,失败返回非-1。起始点origin符号常量值文件开

15、始位置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()puts()文件fprintf()fputw()fputc()fputs()fwrite()fscanf()fgetc()fgetw()fgets()fwrite()计算机的I/O操作小结24 重要通知p本次课后练习在上讲中安排了,在第本次课后练习在上讲中安排了,在第1616周周末之前提交周周末之前提交p1616周上机考试,考试时间同期中机考;周上机考试,考试时间同期中机考;3 3道题,道题,2020分分p1 1月月1 11 1号笔试,占号笔试,占4040分,时间分,时间1 1个小时个小时

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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