第11章-文件.ppt_第1页
第11章-文件.ppt_第2页
第11章-文件.ppt_第3页
第11章-文件.ppt_第4页
第11章-文件.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,C语言编程,11章档案,2020/7/23,2,11章档案(简述),11.1文件的概念11.2文本文件的读写11.3二进制文件的读写,2020/7/23;示例:程序存储在节目文件中,数据存储在数据文件中。* .C C语言源文本文件*。OBJ目标档案二进制文件*。EXE可执行文件二进制文件的存储特性文件是经过排序的数据序列。c语言将文件视为字符(字节)序列,对文件的访问以字符(字节)为单位。11.1档案概述,11.1.1档案和档案指针,1 .文件是什么,2020/7/23,4,设备文件是C语言中“档案”的概念进一步扩展,将连接到主机的每个I/o设备视为一个文件,将物理设备抽象到逻辑文件称为设

2、备文件。到外部设备的输入输出是对设备文件的读写。11.1档案概述,11.1.1档案和档案指针,1 .文件是什么,2020/7/23,5,ASCII档案(或文本文件)ASCII代码文件的每个字节一个ASCII代码二进制文件二进制文件中的数据以节省存储设备的内存的二进制存储格式存储。二进制文件不能由DOS操作系统直接读取。11.1档案概述,11.1.1档案和档案指针,2 .档案类型,2020/7/23,6(例如,将整数19249分别存储在两个数据文件中)。ASCII档案:ASCII代码,二进制文件:补充,使用5字节,使用4字节,11.1档案概述,11.1.1档案和档案指针,2。档案类型2020/7

3、/23系统处理方法是为使用的每个缓冲区文件打开内存中大小为512字节的缓冲区。文件的读写数据都是通过缓冲区完成的。使用无缓冲档案无缓冲档案系统处理的文件称为无缓冲文件。系统在处理无缓冲文件时不会打开文件的缓冲区,因此程序员必须自行设计和管理缓冲区。83年后,ANSI C标准取消了无缓冲档案系统,文本文件和二进制档案均被视为缓冲档案系统。11.1档案概述,11.1.1档案和档案指针,2 .档案类型2020/7/23,8,系统处理文件的过程是导入或导出文件的过程。从文件读取数据时,首先从磁盘文件一次读取一批数据到缓冲区,然后将数据从缓冲区逐个发送到变量。将数据写入文件时,也将变量的数据发送到缓冲区

4、,当缓冲区已满时,将数据一起存储在磁盘文件中。11.1档案概述,11.1.1档案和档案指针,3 .缓冲区档案和档案指针、2020/7/23,9,11.1档案概述、11.1.1档案和档案指针、3。缓冲区档案和档案类型包含在系统定义的stdio.h头文件中,在C语言中,对磁盘档案或设备文件的读/写是通过档案类型的结构变量执行的。因此,必须首先为使用中的每个磁盘文件定义档案类型档案指针变量,并指向牙齿变量。档案*档案指针变量名;typedef struct short level/* fill/empty level of buffer */unsigned flags;/* File status

5、 flags */char FD;/* file descriptor */unsigned charhold;/* ungetc char if no buffer */short bsize;/* buffer size */unsigned char * buffer;/* data transfer buffer */unsigned char * curp;/* current active pointer */unsigned is temp;/* temporary file indicator */short token;/* used for validity checkin

6、g */file;/* this is the file object */,2020/7/23,10,标准文件是外部设备上的三个特殊设备文件。相应的档案指针由系统定义,由系统自动打开和关闭。这三个茄子标准文件是通过标准输入档案指定的,档案指针是stdin,系统是通过键盘指定的。标准输出档案,档案指针为stdout,系统指定为显示器。标准错误输出档案;档案指针为stderr系统指定为显示器;输出错误消息。11.1档案概述,11.1.1档案和档案指针,4 .标准档案,2020/7/23,11,11.1档案概述,打开和关闭11.1.2档案,打开和关闭档案操作的常规步骤档案打开读写档案关闭,读写档案

7、:指示读取、写入、添加和定位文件的操作。关闭档案:断开与程序的连接并释放档案缓冲区。C语言的输入/输出库提供了许多函数,您可以使用这些函数完成设置数据档案、读取和写入数据、添加数据等。在程序中调用这些函数时,必须首先使用include命令包含stdio.h文件。2020/7/23,12,常用调用格式:档案* FPFp=fopen(如何使用档案名称、档案);档案名称:必须打开的档案名称(字符串)。如何使用档案:具有特定含义的符号。11.1档案概述,打开和关闭11.1.2档案,1 .打开档案函数fopen(),函数功能:根据指定的档案使用方法打开指定的文件。成功打开文件后,将档案缓冲区和档案类型变

8、量分配给文件,并返回档案类型指针。如果无法打开文件,则返回NULL。2020/7/23,13,文本文件的三种茄子基本用法“r”:打开只读(输入)文本文件。如果文件不存在,则返回NULL。“w”:仅为写(输出)文本文件打开文件。如果文档不存在,请创建新文档。如果文件已存在,则清空文件。 a :写入(输出)文本文件以打开文件。如果文件已存在,则保留原始文件的内容,并将新数据附加到原始数据之后。如果文件不存在,则返回NULL。11.1档案概述,打开和关闭11.1.2档案,2020/7/23,14,打开二进制的三种茄子基本用法“Rb”:打开只读(输入)二进制文件。如果文件不存在,则返回NULL。“WB

9、”:仅为写(输出)二进制文件打开文件。如果文档不存在,请创建新文档。如果文件已存在,则清空文件。 ab :写入(输出)二进制文件以打开文件。如果文件已存在,则保留原始文件的内容,并将新数据附加到原始数据之后。如果文件不存在,则返回NULL。11.1档案概述,打开和关闭11.1.2档案,2020/7/23,15,11.1档案概述,打开和关闭11.1.2档案,打开其他档案的方法“r”:如果没有文本文件,则为空;返回。如果文件有内容,则不为空。w:可以读取和写入文本文件。如果文件已存在,则首先清空文件的原始内容。“a”:可以读取和添加文本文件。档案内容不为空。“Rb”:允许对二进制文件执行读/写操作

10、。“WB”:允许对二进制文件执行读/写操作。 ab :允许对二进制文件执行读/添加操作。,2020/7/23,16,检查档案打开操作是否成功if (FP=fopen (filename ,r)=null) printf (canne )验证以只读方式打开文件名为filename的档案是否成功。Exit函数的角色:结束节目运行,并将实际收购0作为函数返回值传递给操作系统。11.1档案概述,打开和关闭11.1.2档案,2020/7/23,17,典型调用格式:档案* FPf close(FP);Fp:打开的档案指针。11.1档案概述,打开和关闭11.1.2档案,2 .关闭档案函数fclose(),函

11、数功能:关闭FP指定的档案,释放档案缓冲区,档案类型变量和档案指针。如果文档成功关闭,则返回0。如果文档关闭失败,则返回非零牙齿值。2020/7/23,18,典型调用形式:档案* FPFputc(ch,FP);Ch:需要输出的字符。可以是文字常量或文字变量。Fp:档案指针变量。文本文件的读写操作必须按照文件中的字符顺序执行,并且只有在操作了第I个字符后才能操作第I个字符。处理文件时,文件的读写指针会自动向后移动。读取和写入11.2文本文件,11.2.1文件的字符输入输出函数,1 .文字输出函数fputc(),函数功能:将文字(ASCII代码)写入FP指向的文件(必须以写入或读写方式打开)。如果

12、输出操作成功,则函数返回写入的字符。否则,返回EOF。值为(-1)的系统定义文本文件结束标志。2020/7/23,19,典型调用形式:FILE * fp;ch=fgetc(FP);Ch:可以是文字变量或整数变量。Fp:档案指针变量。读取和写入11.2文本文件,11.2.1文件的字符输入输出函数,2 .字符输入函数fgetc(),函数功能:从FP指向的档案(必须以读或写方式打开)读取字符。如果输入操作成功,则函数返回读取的字符。如果档案关闭或导入操作失败,则返回EOF。2020/7/23,20,示例11.1使用fputc和fgetc函数创建文本文件并显示文件的内容。# include main(

13、)FILE * FP;/*档案指针变量FP */int c定义/* c是包含文字的变量*/char filename 40;/*档案名称用于存档数据档案名称*/printf(档案名称3360)。/*磁盘档案名称提示符*/gets(档案名称);If (FP=fopen (filename,w)=null)打印(cant open the% sn,filename);退出(0);读取和写入11.2文本文件,11.2.1文件中的字符输入输出函数,测试档案打开是否成功,2020/7/23,21,while (c=getchar()!=EOF) /*键盘档案结束旗标:输入Ctrl z,显示z,然后回车符

14、*/fputc(c,FP);/*将使用键盘输入的字符写入文件*/f close(FP);/*结束文档合成,关闭文档*/printf(outfile :n);Fp=fopen(档案名称,r);/*读取文本文件*/while (c=fgetc(fp)!=EOF) /*如果未读取档案结尾标志,则为*/put char(c);/*显示从监视器读取的字符*/f close(FP);/*结束读取档案,关闭档案*/,读取和写入11.2文本文件,11.2.1文件的字符输入输出函数,2020/7/23,22,典型调用格式:档案* FPfeof(FP);Fp:档案指针变量。11.2文本文件读取和写入、11.2.2

15、档案结束测试函数、函数功能:测试FP指向的文件是否读取到档案结束。如果文档没有结束,则返回0。文档结束时返回非零牙齿值。则此高速缓存设置不可用。例如,如果fgetc()返回EOF,则结束档案处理。但是,在二进制文件中,-1是法律数据,因此系统提供了更常见的档案终止测试函数feof。2020/7/23,23(例如,复制磁盘档案)。#include main() FILE *infp,* outfpChar infile40、outfile40Int chPrintf(输入文件名:);Scanf(%s,infile);Printf(输出档案名称:);Scanf(%s,outfile);If (infp=fopen (infile,r)=null)/*打开源档案*/printf(infile open error . n);退出(0);If (outfp=fopen (outfile,w)=null)/*打开目标档案*/printf(outfile open error . n);退出(0);ch=fgetc(infp);/*源文件中的文字*/while(!feof(infp)/*未读取源文件*/fputc(ch,outfp);ch=fgetc(infp);/*复制档案*/f close(infp);f close(outfp);11.

温馨提示

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

评论

0/150

提交评论