收藏 分销(赏)

【C语言程序设计】第十一章-文件.ppt

上传人:快乐****生活 文档编号:2382339 上传时间:2024-05-29 格式:PPT 页数:20 大小:293.50KB
下载 相关 举报
【C语言程序设计】第十一章-文件.ppt_第1页
第1页 / 共20页
【C语言程序设计】第十一章-文件.ppt_第2页
第2页 / 共20页
【C语言程序设计】第十一章-文件.ppt_第3页
第3页 / 共20页
【C语言程序设计】第十一章-文件.ppt_第4页
第4页 / 共20页
【C语言程序设计】第十一章-文件.ppt_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、第十一章 文件n文件基本概念文件基本概念n文件打开与关文件打开与关闭闭n文件文件读读写写111.1 C文件概述文件概述n文件:存储在外部介质上数据的集合,是操作系统数据管理的单位。使用数据文件的目的:使用数据文件的目的:1、数据文件的改、数据文件的改动动不引起程序的改不引起程序的改动动程序与程序与 数据分离;数据分离;2、不同程序可以、不同程序可以访问访问同一数据文件中的数据同一数据文件中的数据数据共享;数据共享;3、能、能长长期保存期保存程序运行的中程序运行的中间间数据或数据或结结果数据。果数据。2 文件分类n按文件的按文件的逻辑结逻辑结构:构:n记录记录文件:由具有一定文件:由具有一定结结

2、构的构的记录组记录组成(定成(定长长和不定和不定长长)n流式文件流式文件:由一个个字符(字:由一个个字符(字节节)数据)数据顺顺序序组组成成n按存按存储储介介质质:n普通文件:存普通文件:存储储介介质质文件(磁文件(磁盘盘、磁、磁带带等)等)n设备设备文件文件:非存:非存储储介介质质(键盘键盘、显显示器、打印机等)示器、打印机等)n按数据的按数据的组织组织形式:形式:n文本文件文本文件:ASCII文件,每个字文件,每个字节存放一个字符的存放一个字符的ASCII码n二二进制文件制文件:数据按其在内存中的存:数据按其在内存中的存储形式原形式原样存放存放3 EOF文件的文件的结结束符束符:C语语言中

3、言中规规定的定的标标准文件有三个:准文件有三个:标标准准输输入文件(入文件(键盘键盘),文件指),文件指针为针为stdin;标标准准输输出文件(出文件(显显示屏幕),文件指示屏幕),文件指针为针为stdout;标标准出准出错输错输出文件,文件指出文件,文件指针为针为stderr。C语语言中的文件言中的文件为为流式文件流式文件一个字一个字节节流或二流或二进进制流。制流。文件的文件的读读写是按写是按顺顺序序进进行的,以字符(字行的,以字符(字节节)为单为单位。位。这这些文件在操作前或后,系些文件在操作前或后,系统统会会自自动动将其打开或关将其打开或关闭闭,编编程程时时不需管。不需管。4如:如:in

4、t型数型数100000010011100010000内存存内存存储储形式形式0010011100010000二二进进制形式制形式0011000100110000001100000011000000110000ASCII形式形式文本文件特点:存储量大、速度慢、便于对字符操作二进制文件特点:存储量小、速度快、便于存放中间结果,可节省外存空间和转换时间但不能直接输出字符5 文件文件处理方法理方法n缓缓冲文件系冲文件系统统:高:高级级文件系文件系统统,系,系统统自自动为动为正在使正在使用的文件开辟内存用的文件开辟内存缓缓冲区冲区n非非缓缓冲文件系冲文件系统统:低:低级级文件系文件系统统,由用,由用户户

5、在程序中在程序中为为每个文件每个文件设设定定缓缓冲区冲区磁磁盘盘文件文件输输出文件出文件缓缓冲区冲区输输入文件入文件缓缓冲区冲区程序数据区程序数据区a缓缓冲文件系冲文件系统统:缓缓冲区冲区指令区指令区程序程序用用户户数据区数据区磁磁盘盘非非缓缓冲文件系冲文件系统统:611.2 文件文件类类型指型指针针n文件文件结结构构FILEn 缓缓冲文件系冲文件系统为统为每个正使用的文件在内存开辟文件每个正使用的文件在内存开辟文件信息区信息区n文件信息用系文件信息用系统统定定义义的名的名为为FILE的的结构描述构描述nFILE定定义在在stdio.h中中typedef struct int _fd;/*文件

6、号文件号*/int _cleft;/*缓冲区中剩下的字符数冲区中剩下的字符数*/int _mode;/*文件操作方式文件操作方式*/char *_next;/*文件当前文件当前读写位置写位置*/char *_buff;/*文件文件缓冲区位置冲区位置*/FILE;7n文件文件类类型指型指针针n指指针变针变量量说说明:明:FILE *fp;n用法:用法:n文件打开文件打开时时,系,系统统自自动动建立文件建立文件结结构,并把指向它的指构,并把指向它的指针针返返回来,程序通回来,程序通过这过这个指个指针获针获得得文件信息,文件信息,访问文件文件n文件关文件关闭闭后,它的文件后,它的文件结结构被构被释释

7、放放文件名文件名文件使用文件使用方式方式文件文件类类型指型指针针C程序程序操作系操作系统统磁磁盘盘811.3 文件的打开与关文件的打开与关闭闭v一般文件:操作前需一般文件:操作前需打开打开,操作后需,操作后需关关闭闭。打开和关。打开和关闭闭均是通均是通过过库库函数函数进进行的。行的。v打开文件打开文件就是要在内存中建立就是要在内存中建立缓缓冲区,如打开成功,冲区,如打开成功,打开函数返回一个内存地址打开函数返回一个内存地址值值,由一个文件指,由一个文件指针针接收。接收。以后的操作使用以后的操作使用这这个指个指针针。若内存不可建立。若内存不可建立缓缓冲区,冲区,则则打开失打开失败败,打开函数返回

8、,打开函数返回NULL。v关关闭闭文件文件很重要,是要将文件送回磁很重要,是要将文件送回磁盘盘,并从内存中,并从内存中清除。及清除。及时释时释放内存空放内存空间间,并可保,并可保证证文件安全。文件安全。v文件使用方式:文件使用方式:打开文件打开文件-文件文件读读/写写-关关闭闭文件文件9n打开文件打开文件fopenn函数原型:函数原型:FILE *fopen(char*name,char*mode);n功能:按指定方式打开文件功能:按指定方式打开文件n返返值值:正常打开,:正常打开,为为指向文件指向文件结结构体的指构体的指针针;打开失;打开失败败,为为NULL要打开的文件名要打开的文件名使用文

9、件方式使用文件方式例例 FILE *fp;fp=fopen(“c:pytest.dat”,”r”);例例 FILE *fp;char *filename=“c:pytest.dat”fp=fopen(filename,”r”);“r+/rb+”(读写写)“a/ab”(追加追加)“w/wb”(只写只写)“r/rb”(只只读)“w+/wb+”(读写写)“a+/ab+”(读写写)为为输输入入打开一个文本打开一个文本/二二进进制文件制文件为为输输出出打开或建立一个文本打开或建立一个文本/二二进进制文件制文件为读为读/写打开一个文本写打开一个文本/二二进进制文件制文件为读为读/写建立一个文本写建立一个文

10、本/二二进进制文件制文件为读为读/写打开或建立一个文本写打开或建立一个文本/二二进进制文件制文件向文本向文本/二二进进制文件尾制文件尾追加追加数据数据文件使用方式文件使用方式含含义义10n文件关文件关闭闭fclosen函数原型:函数原型:int fclose(FILE *fp);n功能:关功能:关闭闭fp指向的文件,使文件指指向的文件,使文件指针变量与文件量与文件“脱脱钩”,释放文件放文件结构占用的内存空构占用的内存空间n返返值:正常关:正常关闭为0;出出错时,非非0文件打开文件打开时时返回的文件指返回的文件指针针磁磁盘盘文件文件输输出文件出文件缓缓冲区冲区输输入文件入文件缓缓冲区冲区程序数据

11、区程序数据区a缓缓冲文件系冲文件系统统:fclose不关不关闭文件可能会文件可能会丢失数据失数据1111.4 文件的文件的读读写写n字符字符I/O:fputc与与fgetcnfputcn函数原型:函数原型:int fputc(char c,FILE*fp);n功能:把一字功能:把一字节节代代码码c写入写入fp指向的文件中指向的文件中n返返值:正常,返回:正常,返回c;出;出错,返回非,返回非0nfgetcn函数原型:函数原型:int fgetc(FILE*fp);n功能:从功能:从fp指向的文件中指向的文件中读取一字取一字节代代码n返返值:正常,返回:正常,返回读到的字符;到的字符;读到文件尾

12、或出到文件尾或出错,为EOF12例:从例:从键盘输键盘输入字符,入字符,逐个存到磁逐个存到磁盘盘文件中,文件中,直到直到输输入入#“为为止。止。#include main()FILE*fp;char ch,*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);例:例:读读文本文件内

13、容,文本文件内容,并并显显示。示。#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);判断判断文本文件文本文件是否是否结结束束13n字符串字符串I/O:fgets与与fputsn函数原型:函数原型:char *fgets(char*s,int n,FILE*fp);int fputs(char *s,FILE *fp);n功能

14、:从功能:从fp指向的文件指向的文件读/写一个字符串写一个字符串n返返值:nfgets正常正常时返回返回读取字符串的首地址;出取字符串的首地址;出错或文件尾,或文件尾,返回返回NULLnfputs正常正常时返回返回0;出;出错返回非返回非0nfeofn函数原型:函数原型:int feof(FILE *fp);n功能:判断文件是否功能:判断文件是否结结束束n返返值:文件:文件结束,返回真(非束,返回真(非0);文件未);文件未结束,返回束,返回014n数据数据块块I/O:fread与与fwriten函数原型:函数原型:size_t fread(void*buffer,size_t size,si

15、ze_t count,FILE *fp);size_t fwrite(void*buffer,size_t size,size_t count,FILE *fp);n功能:功能:读读/写数据写数据块块。成功,返回。成功,返回读读/写的写的块块数;出数;出错错或或文件尾,返回文件尾,返回0n说说明:明:ntypedef unsigned size_t;nbuffer:指向要指向要输入入/输出数据出数据块的首地址的指的首地址的指针nsize:每个要每个要读/写的数据写的数据块的大小(字的大小(字节数)数)ncount:要要读/写的数据写的数据块的个数的个数nfp:要要读/写的文件指写的文件指针nf

16、read与与fwrite 一般用于一般用于二二进制文件制文件的的输入入/输出出15例:从例:从键盘输键盘输入入4个学生数据,先个学生数据,先转转存到磁存到磁盘盘文件再文件再读读出出显显示示#include#define SIZE 4struct student_type char name10;int num;int age;char addr15;studSIZE;main()int i;for(i=0;iSIZE;i+)scanf(%s%d%d%s,studi.name,&studi.num,&studi.age,studi.addr);save();display();void save

17、()FILE*fp;int i;if(fp=fopen(d:pystu_dat,wb)=NULL)printf(cannot open filen);return;for(i=0;iSIZE;i+)if(fwrite(&studi,sizeof(struct student_type),1,fp)!=1)printf(file write errorn);fclose(fp);void display()FILE*fp;int i;if(fp=fopen(d:pystu_dat,rb)=NULL)printf(cannot open filen);return;for(i=0;iSIZE;i+

18、)fread(&studi,sizeof(struct student_type),1,fp);printf(%-10s%4d%4d%-15sn,studi.name,studi.num,studi.age,studi.addr);fclose(fp);16n格式化格式化I/O:fprintf与与fscanfn函数原型:函数原型:int fprintf(FILE*fp,const char*format,argument,);int fscanf(FILE*fp,const char*format,address,);n功能:按格式功能:按格式对对文件文件进进行行I/O操作操作n返返值值:成功

19、,返回:成功,返回I/O的个数;的个数;出出错错或文件尾,返回或文件尾,返回EOF。例:例:fprintf(fp,“%d,%6.2f”,i,t);/*将将i和和t按按%d,%6.2f格式格式输出到出到fp文件文件*/fscanf(fp,“%d,%f”,&i,&t);/*若文件中有若文件中有3,4.5,则将将3送入送入i,4.5送入送入t*/17例:从例:从键盘键盘按格式按格式输输入入数据存到磁数据存到磁盘盘文件中,文件中,从磁从磁盘盘文件文件按格式按格式输输入入数据并数据并显显示。示。#include main()char s80,c80;int a,b;FILE*fp;if(fp=fopen

20、(test,w)=NULL)puts(cant open file);exit();fscanf(stdin,%s%d,s,&a);/*read from keaboard*/fprintf(fp,%s%d,s,a);/*write to file*/fclose(fp);if(fp=fopen(test,r)=NULL)puts(cant open file);exit();fscanf(fp,%s%d,c,&b);/*read from file*/fprintf(stdout,%s%d,c,b);/*print to screen*/fclose(fp);1811.5 其他文件操作函数其

21、他文件操作函数n文件位置指文件位置指针针-指向当前指向当前读读写位置的指写位置的指针针n读读写方式写方式n顺顺序序读读写:位置指写:位置指针针按字按字节节位置位置顺顺序移序移动动n随机随机读读写:位置指写:位置指针针按需要移按需要移动动到任意位置到任意位置nrewind函数函数n函数原型:函数原型:void rewind(FILE *fp);n功能:重置文件位置指功能:重置文件位置指针到文件开到文件开头n返返值:无:无nfseek函数函数n函数原型:函数原型:int fseek(FILE*fp,long offset,int whence);n功能:改功能:改变文件位置指文件位置指针的位置的位

22、置n返返值:成功,返回:成功,返回0;失;失败,返回非,返回非0值。nferror函数函数n函数原型:函数原型:int ferror(FILE *fp);n功能:功能:测试文件操作是否出文件操作是否出现错误n返返值:未出:未出错,0;出;出错,非,非019小小结结n系系统统把文件当作一个把文件当作一个“流流”,按字,按字节进节进行行处处理。理。n文件按文件按编码编码方式分方式分为为二二进进制文件和制文件和ASCII文件。文件。n语语言中,用文件指言中,用文件指针标识针标识文件,当一个文件被文件,当一个文件被 打开打开时时,取得取得该该文件指文件指针针。n文件在文件在读读写之前必写之前必须须打开,打开,读读写写结结束必束必须须关关闭闭。n文件可按只文件可按只读读、只写、只写、读读写、追加四种操作方式打开,写、追加四种操作方式打开,同同时还时还必必须须指定文件的指定文件的类类型是二型是二进进制文件制文件还还是文本文件。是文本文件。n文件可按字文件可按字节节,字符串,数据,字符串,数据块为单块为单位位读读写,文件也可写,文件也可按指定的格式按指定的格式进进行行读读写。写。n文件内部的位置指文件内部的位置指针针可指示当前的可指示当前的读读写位置,移写位置,移动该动该指指针针可以可以对对文件文件实现实现随机随机读读写。写。20

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服