- 1、本文档共73页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第11章文件《C语言程序设计(第三版)》电子教案整理
第11章 文件 了解磁盘文件的概念和用途 掌握文件指针的概念和文件指针变量的定义方法 深刻理解文件的读、写、定位等基本操作的实现 熟悉文件的打开、关闭、读、写、定位等函数的调用形式 掌握文件操作在程序设计中的应用方法 掌握编译预处理的基本概念和使用形式 11.1 文件概述 【问题】数据在计算机中如何被保存和阅读? 11.1.1 文件的概念 所谓“文件”是指一组相关数据的有序集合。 这个数据集有一个名称,叫做文件名。 例如:k:program.c,其中k:是路径,program.c是文件名。当需要使用文件的时候,需要将文件调入内存中。 11.1.2 文件的分类 从用户使用的角度看,文件可分为普通文件和设备文件 从文件编码和数据的组织方式来看,文件可分为ASCII码文件和二进制码文件。 ASCII文件也称为文本文件,文件在磁盘中存放时每个字符占一个字节,每个字节中存放相应字符的ASCII码。内存中的数据存储时需要转换为ASCII码。 二进制文件则不同,内存中的数据存储的时候不需要进行数据转换,存储介质上保存的数据采用与内存数据一致的表示形式存储。 11.1.2 文件的分类 从C语言对文件的处理方法来看。旧的C版本(如Unix系统下使用的C)有两种对文件的处理方法:一种叫“缓冲文件系统”,一种叫“非缓冲文件系统”。 缓冲文件系统:系统自动地在内存区为每一个正在使用的文件名开辟一个缓冲区。从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘去。 非缓冲文件系统:指系统不自动开辟确定大小的缓冲区,而由程序为每个文件设定缓冲区。 11.2 文件操作 11.2.1 FILE文件类型指针 typedef struct { short level; /* 缓冲区“满”或“空”的程度*/ unsigned flags; /* 文件状态标志*/ char fd; /* 文件描述符*/ unsigned char hold; /* 无缓冲区不读取字符*/ short bsize; /* 缓冲区大小*/ unsigned char *buffer; /* 数据缓冲区位置指针*/ unsigned char *curp; /* 当前指针指向*/ unsigned istemp; /* 临时文件指示器*/ short token; /* 用于有效性检查*/ } FILE; 有了FILE类型以后可以定义文件类型指针变量。例如: FILE *fp; 标准设备文件 C语言中的是由系统控制的,由系统自动打开和关闭,其文件结构指针由系统命名,用户无需说明即可直接使用,例如: stdin 标准输入文件(键盘) stdout 标准输出文件(显示器) stderr 标准错误输出文件(显示器) 11.2.2 文件的打开操作 C语言用fopen()函数来实现文件的打开。fopen函数的调用方式一般为: FILE *fp; fp=fopen(文件名,文件使用方式); 例如: fp=fopen (result.txt,r); 11.2.2 文件的打开操作 打开文件方式 11.2.2 文件的打开操作 说 明 用以上方式可以打开文本文件或二进制文件,这是ANSI C的规定,即用同一种缓冲文件系统来处理文本文件和二进制文件。但目前使用的有些C编译系统可能不完全提供所有这些功能(例如有的只能用“r”、“w”、“a”方式),有的C版本不用“r+”、“w+”、“a+”而用“rw”、“wr”、“ar”等,请读者注意所用系统的规定。 说 明 如果不能实现“打开”的任务,fopen函数将会返回一个出错信息。出错的原因可能是:用“r”方式打开一个并不存在的文件;磁盘出故障;磁盘已满无法建立新文件等。此时fopen函数将带回一个空指针值NULL(NULL在stdio.h文件中已被定义为0)。常用下面的方法打开一个文件: if((fp=fopen(filename,r“))==NULL){ printf(cannot open this file.\n“); exit(0); } 说 明 用“w”方式打开文件时,只能从内存向该文件输出(写)数据, 而不能从文件向内存输入数据。如果该文件原来不存在,则打开时按指定文件名建立一个新文件。如果原来的文件已经存在,则打开时将文件删空,然后
文档评论(0)