已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
文件,C文件概述文件:存储在外部介质上数据的集合,是操作系统数据管理的单位,使用数据文件的目的1、数据文件的改动不引起程序的改动程序与数据分离2、不同程序可以访问同一数据文件中的数据数据共享3、能长期保存程序运行的中间数据或结果数据,文件分类按文件的逻辑结构:记录文件:由具有一定结构的记录组成(定长和不定长)流式文件:由一个个字符(字节)数据顺序组成按存储介质:普通文件:存储介质文件(磁盘、磁带等)设备文件:非存储介质(键盘、显示器、打印机等)按数据的组织形式:文本文件:ASCII文件,每个字节存放一个字符的ASCII码二进制文件:数据按其在内存中的存储形式原样存放,文本文件特点:存储量大、速度慢、便于对字符操作,二进制文件特点:存储量小、速度快、便于存放中间结果,文件处理方法缓冲文件系统:高级文件系统,系统自动为正在使用的文件开辟内存缓冲区非缓冲文件系统:低级文件系统,由用户在程序中为每个文件设定缓冲区,文件类型指针文件结构体FILE缓冲文件系统为每个正使用的文件在内存开辟文件信息区文件信息用系统定义的名为FILE的结构体描述FILE定义在stdio.h中,typedefstructint_fd;/文件号int_cleft;/缓冲区中剩下的字符数int_mode;/文件操作方式char*_next;/文件当前读写位置char*_buff;/文件缓冲区位置FILE;,文件类型指针指针变量说明:FILE*fp;用法:文件打开时,系统自动建立文件结构体,并把指向它的指针返回来,程序通过这个指针获得文件信息,访问文件文件关闭后,它的文件结构体被释放,文件的打开与关闭C文件操作用库函数实现,包含在stdio.h文件使用方式:打开文件-文件读/写-关闭文件系统自动打开和关闭三个标准文件:标准输入-键盘stdin标准输出-显示器stdout标准出错输出-显示器stderr打开文件fopen函数原型:FILE*fopen(char*name,char*mode),功能:按指定方式打开文件返值:正常打开,为指向文件结构体的指针;打开失败,为NULL,要打开的文件名,使用文件方式,例文件打开与测试FILE*fp;fp=fopen(“aa.c”,“w”);if(fp=NULL)printf(“Fileopenerror!n”);exit(0);,例FILE*fp;fp=fopen(“c:fengyibkctest.dat”,”r”);,例FILE*fp;char*filename=“c:fengyibkctest.dat”fp=fopen(filename,”r”);,文件关闭fclose作用:使文件指针变量与文件“脱钩”,释放文件结构体和文件指针函数原型:intfclose(FILE*fp),功能:关闭fp指向的文件返值:正常关闭为0;出错时,非0,文件打开时返回的文件类型指针,不关闭文件可能会丢失数据,文件的读写字符I/O:fputc与fgetcfputc函数原型:intfputc(intc,FILE*fp)功能:把一字节代码c写入fp指向的文件中返值:正常,返回c;出错,为EOF,fgetc函数原型:intfgetc(FILE*fp)功能:从fp指向的文件中读取一字节代码返值:正常,返回读到的代码值;读到文件尾或出错,为EOF,文件I/O与终端I/O#defineputc(ch,fp)fputc(ch,fp)#definegetc(fp)fgetc(fp)#defineputchar(c)fputc(c,stdout)#definegetchar()fgetc(stdin),判断二进制文件是否结束while(!feof(fp)c=fgetc(fp);.,例从键盘输入字符,逐个存到磁盘文件中,直到输入#“为止,#includemain()FILE*fp;charch,*filename=“out.txt”;if(fp=fopen(filename,w)=NULL)printf(cannotopenfilen);exit(0);printf(Pleaseinputstring:);ch=getchar();while(ch!=#)fputc(ch,fp);putchar(ch);ch=getchar();fclose(fp);,例读文本文件内容,并显示,#includemain()FILE*fp;charch,*filename=“out.txt”;if(fp=fopen(filename,”r)=NULL)printf(cannotopenfilen);exit(0);while(ch=fgetc(fp)!=EOF)putchar(ch);fclose(fp);,判断文本文件是否结束,feof函数原型:intfeof(FILE*fp)功能:判断文件是否结束返值:文件结束,返回真(非0);文件未结束,返回0,#includemain()FILE*in,*out;charch,infile10,outfile10;scanf(%s,infile);scanf(%s,outfile);if(in=fopen(infile,r)=NULL)printf(Cannotopeninfile.n);exit(0);if(out=fopen(outfile,w)=NULL)printf(Cannotopenoutfile.n);exit(0);while(!feof(in)fputc(fgetc(in),out);fclose(in);fclose(out);,数据块I/O:fread与fwrite函数原型:,size_tfread(void*buffer,size_tsize,size_tcount,FILE*fp)size_tfwrite(void*buffer,size_tsize,size_tcount,FILE*fp),功能:读/写数据块返值:成功,返回读/写的块数;出错或文件尾,返回0说明:typedefunsignedsize_t;buffer:指向要输入/输出数据块的首地址的指针size:每个要读/写的数据块的大小(字节数)count:要读/写的数据块的个数fp:要读/写的文件指针fread与fwrite一般用于二进制文件的输入/输出,例floatf2;FILE*fp;fp=fopen(“aa.dat”,“rb”);fread(f,4,2,fp);,for(i=0;i2;i+)fread(,例structstudentintnum;charname20;charsex;intage;floatscore3;stud10;for(i=0;i10;i+)fread(,例从键盘输入4个学生数据,把他们转存到磁盘文件中去,#include#defineSIZE2structstudent_typecharname10;intnum;intage;charaddr15;studSIZE;main()inti;for(i=0;iSIZE;i+)scanf(%s%d%d%s,,voidsave()FILE*fp;inti;if(fp=fopen(d:fengyiexestu_dat,wb)=NULL)printf(cannotopenfilen);return;for(i=0;i0向后移动0向前移动,起始点文件开始SEEK_SET0文件当前位置SEEK_CUR1文件末尾SEEK_END2,例fseek(fp,100L,0);fseek(fp,50L,1);fseek(fp,-10L,2);,ftell函数函数原型:longftell(FILE*fp)功能:返回位置指针当前位置(用相对文件开头的位移量表示)返值:成功,返回当前位置指针位置;失败,返回-1L,,例磁盘文件上有3个学生数据,要求读入第1,3学生数据并显示,#includestdio.hmain()FILE*fp;charfilename80;longlength;gets(filename);fp=fopen(filename,rb);if(fp=NULL)printf(filenotfound!n);elsefseek(fp,0L,SEEK_END);length=ftell(fp);printf(LengthofFileis%1dbytesn,length);fclose(fp);,例求文件长度(ch12_101.c),出错的检测ferror函数函数原型:intferror(FILE*fp)功能:测试文件是否出现错误返值:未出错,0;出错,非0说明每次调用文件输入输出函数,均产生一个新的ferror函数值,所以应及时测试fopen打开文件时,ferror函数初值自动置为0,clearerr函数函数原型:voidclearerr(FILE*fp)功能:使文件错误标志置为0返值:无说明:出错后,错误标志一直保留,直到对同一文件调clearerr(fp)或rewind或任何其它一个输入输出函数,例ferror()与clearerr()举例,#includeintmain
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 彩色牛奶绘本课程设计
- 送料装置自适应结构设计技巧课程设计
- 齿轮带传动课程设计
- 基于SPI的Flash读写控制器设计实例课程设计
- 北理工课程设计机械
- 倒立摆控制课程设计MATLAB课程设计
- 生物信息学DNA序列比对工具行业标准课程设计
- 测井课程设计的建议
- 搜索引擎联邦学习课程设计
- 搜索引擎可扩展性课程设计
- 汽车装潢施工方案(3篇)
- 伦理审查中的试验方案科学性评估
- 第一单元 分类与整 理 课件 2025-2026学年二年级数学人教版上册
- 湖南省法院书记员招聘笔试真题2024
- T/CAPE 10108-2024设备设施报废管理指南
- 计算机视觉完整全套教学课件
- 输血知识临床培训课件
- (2025秋新修订)人教版三年级数学上册全册教案(教学设计)
- 2025中国人寿招聘笔试参考题库完整答案详解
- T-CCTAS 34-2022 带肋钢筋轴向冷挤压连接技术规程
- 超市货物转场协议书
评论
0/150
提交评论