




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、、档案、共57页2页、11章档案、文件基本概念文件的默认函数档案顺序读和写文件的随机读和写档案简单应用节目、牙齿章节要点、共57页3页、11章档案、1节文件概述2节文件处理3节文件顺序读和写4节文件随机活动5节文件检测、共57页4页示例:程序文件包含C6_6002。CC语言的源文本文件C6_6002。OBJ目标档案二进制档案C6_6002。EXE可执行文件二进制档案,11-1档案概述/57页第5页,文件的属性文件是有序的数据序列。文件中的所有数据之间存在严格的排序顺序关系。要访问文件中的数据,可以按排序顺序访问,也可以访问所需位置的数据。11-1档案概述,第57页第6页,系统文件处理流程系统文
2、件处理流程是档案导入/导出操作流程。档案导入/导出的一般过程:11-1档案概述、档案、输出档案缓冲区、输入档案缓冲区、电脑记忆体、电脑外部内存、写入文件称为输出,读取文件称为输入,共57页7页每个ASCII字符占用一个字节。可以使用文本编辑器直接读取ASCII文件。存储在二进制文件中的数据是直接存储在文件中,而不是转换内存中的二进制存储格式。二进制文件不能由操作系统直接读取。11-1档案概览,共57页8页,两个茄子档案配置格式,11-1档案概览,内存存储格式:补充,ASCII档案:ASCII代码,二进制文件:补充,使用4字节,使用2字节,共57页9页缺点是需要占用大量磁盘存储空间,并且系统需要
3、支付将内存的二进制表示转换为ASCII代码的时间开销。以二进制格式输出可以节省磁盘空间和转换时间,但导出的数据是内存的格式,无法在操作系统和常规编辑器中直接标识。11-1档案概述,共57页10页,从档案分类用户的角度来看,文件可以分为两个茄子类别。常规档案(也称为磁盘文件)特殊档案(也称为标准设备档案或标准I/o文件)常规文件是基于磁盘的对象,是没有其他特殊性能的文件。特殊文件是以端子为目标的标准设备文件。11-1档案概述,共57页11页,在档案分类C语言中,“档案”的概念具有更广泛的意义。将连接到每个主机的所有I/o设备视为一个文件。将物理设备抽象为逻辑文件,也称为设备文件。例如,键盘是输入
4、文件。stdin(标准输入档案)监视器是输出文件。stdout(标准输出档案)打印机是输出文件。PRN、11-1档案概述、共57页12页、档案分类可以根据c语言中文件的处理方式将文件分为两个茄子类别。缓冲区文件系统。无缓冲文件系统缓冲区文件系统:对于使用中的每个文件,系统将在内存中自动打开档案缓冲区。称为高级档案任务。非缓冲文件系统:系统不会自动打开缓冲区。档案缓冲区由节目本身设置。称为低级档案任务。11-1档案概述,共57页13页,档案分类取消自83年以来ANSI C标准中的无缓冲档案系统,并将文本文件和二进制档案均视为缓冲档案系统。在“牙齿”模块中,您将学习缓冲档案的工作原理,并对磁盘文件
5、执行基本操作。第11-1页档案概述/57页第14页,说明和使用存储有关档案类型档案缓冲区档案系统中使用的每个文件的信息的档案类型结构变量,如档案名称和档案状态等。在c语言中,常规磁盘档案或设备文件通过档案结构的数据集处理输入和输出。档案结构不需要自定义,由系统预定义,固定包含在头文件stdio.h中。用户可以直接使用。11-2档案处理,57页15页,档案类型FILE typedef struct int _ fd/*档案位置指针(当前文件的读写位置)*/int _ cleft;/*档案缓冲区中剩馀的字节数*/int _ mode;/*档案操作模式*/char * nextc;/*用于读取和写入
6、档案的下一个字符位置*/char * _ buff;/*档案缓冲区位置(指针)*/档案;FILE是档案结构类型的类型名称。使用文件时使用包含档案命令:#include档案结构由操作系统在打开文件时自动设置,从而避免了用户在使用文件时重复定义。档案结构中最重要的信息之一是记录档案读写操作时的位置指针。11-2档案处理-档案指针,共57页16页,档案指针在C程序中。要使用文件,必须在文件和节目之间建立连接。要设置适合系统需要处理的文档的文档结构,程序必须能够获取系统中设置的文档结构。为此,程序必须描述指向档案结构的指针,即定义档案类型(档案类型)的指针变量。档案类型指针变量说明格式档案*档案类型指
7、针变量名称;示例:档案* FP/* FP是指针变量*/,11-2档案处理-档案指针/57页第17页,使用文件的一般过程关闭档案打开操作档案关闭档案打开:建立用户程序和档案连接,打开文件的档案缓冲区。作业档案:表示对文件的读取、写入、添加和定位操作。读取作业:从档案读取资料。也就是说,将文件中的数据读取到计算机中。写入:将资料写入档案。也就是说,将数据输出到文件。其他作业:在现有资料之后写入资料。导航操作:档案读写位置指针。关闭档案:程序断开档案连接,将档案缓冲区的内容写入磁盘,然后清空档案缓冲区。11-2档案处理-操作文件的一般步骤,共57页18页,打开档案(fopen) fopen函数调用格
8、式:FILE * FPFp=fopen(如何使用档案名称、档案);档案名称:必须打开的档案名称(字符串)。如何使用档案:具有特定含义的符号。常用变量说明:char filename30,mode10或char * filename,* mode函数功能根据指定的档案使用方法打开指定的文件。成功打开文件后,返回值是指针,而不是空牙齿。如果无法打开文件,则返回NULL。11-2档案处理-fopen,第57页第19页,打开档案(fopen) fopen函数调用格式:FILE * FPFp=fopen(如何使用档案名称、档案);11-2档案处理-fopen的三种茄子方法,文本文件的三种茄子默认打开方法
9、“r”:只读方法。打开文件以读取(输入)文本文件。如果文件不存在,则返回NULL。w :仅写入方法。打开写入(输出)文本文件的文件。如果文档不存在,请创建新文档。如果文件已存在,则清空原始文件。“a”:添加方法。将数据添加到文本文件的末尾。如果文件已存在,则保留原始文件的内容,并将新数据附加到原始数据之后。如果文件不存在,则返回NULL。第57页第20页,二进制的三种茄子默认打开方法“Rb”:只读。“WB”:仅限写入。Ab:添加方法。打开文件的其他方法“r”:可以读取和写入文本文件。如果文件不存在,则为空;返回。如果文件有内容,则不为空。w:可以读取和写入文本文件。如果文件已存在,则必须首先清
10、空文件的原始内容。“a”:可以读取和添加文本文件。文件不为空。“Rb”:允许对二进制文件执行读/写操作。“WB”:允许对二进制文件执行读/写操作。 ab :允许对二进制文件执行读/添加操作。11-2档案处理-fopen牙齿的打开方式,共57页第21页, 档案打开方法摘要如何使用档案含义r打开用于只读输入的文本文件打开用于w写输出的文本文件a添加数据到文本文件末尾打开用于Rb只读输入的二进制文件打开用于WB写输出的二进制文件打开ab添加二进制文件末尾的数据r打开读/写读/写文本文件w读/写文本文件写入创建新文本文件添加读/写文本文件打开Rb读/写读/写打开二进制文件打开WB读/写读/写创建新二进
11、制文件打开ab读/写读/写二进制文件,11-2档案处理-fopen,第57页27一般档案打开任务if 退出(0);/*打开文件时出错。调用库函数停止程序。*/含义:以只读方式打开文件名为filename的档案。Char * pfilenameIf (FP=fopen (p filename,r)=null)printf( cannot open file . n );退出(0);意义:以只读方式打开pfilename牙齿指向的文件。档案名称可以是以字母开头的完整路径名,也可以是相对路径。11-2档案处理-fopen,第57页第23页,关闭档案(fclose) fclose函数调用格式:FILE
12、 * FPf close(FP);Fp:打开的档案指针。函数功能关闭FP指定文件,断开缓冲区连接,然后释放档案指针。成功关闭文件后,返回值为0。如果文档关闭失败,则返回非零牙齿值。11-2档案处理-fclose,共57页24页,系统标准设备档案标准设备文件由系统控制,系统自动打开和关闭,指向标准设备文件档案结构的指针由系统命名,用户可以直接在程序中使用。指向三个茄子标准设备文件的指针以c语言提供。stdin标准输入档案(键盘)stdout标准输出档案(显示器)stderr标准错误输出档案(显示器),11-2档案处理-标准设备文件,c语言通过标准I/O库(stdio)处理文件时,文件的位置指针由
13、系统自动向前移动顺序操作的函数字符输入输出函数fgetc fputc字符串输入输出函数fgets fputs格式输入输出函数fscanf fprintf数据块输入输出函数fread fwrite,11-3档案顺序读取和写入第57页第26页,字符输入输出(fgetc/fputc) Fp已经从指定文件读取字符。也就是说,从FP指向的档案(必须以读或写方式打开)读取字符返回,并将读取的字符分配给变量ch。读取文字时文件结束或出错:对于ASCII文件,在文件结束时返回档案结尾标记EOF(-1)。对于二进制文件,请使用feof函数确定文件是否终止。,读取和写入11-3档案顺序-fgetc/fputc,第
14、57页第27页,文字输入和输出(fgetc/fputc)输出函数:fputc(ch,FP);Ch是需要输出的字符函数功能。将一个字符输出到指定文件。将文字变量ch中的文字输出到FP指向的文件。如果输出操作成功,则函数返回输出字符。否则,返回EOF。读取和写入11-3档案顺序-fgetc/fputc,第57页第28页(例如C11-1)。c:显示文本文件的内容)。# include main()FILE * FP;Char filename20,ch;printf(Enter filename :);Scanf (%s,档案名称);/*输入档案名称*/if (FP=fopen (filename,r)=null)/*打开*/printf (file openerror.n .)While (ch=fgetc(fp)!=EOF) /*读取文字*/put char(ch);f close(FP);/*关闭档案*/,读取和写入11-3档案顺序-fgetc/fputc,示例C11-1/57第29页,示例C11-2:使用标准输出文件显示文本文件的内容。# include main()FILE * FP;Char filename20,ch;printf(Enter filename :);s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论