欢迎来到天天文库
浏览记录
ID:50351852
大小:420.50 KB
页数:73页
时间:2020-03-08
《C语言程序设计(第三版)教学课件 丁亚涛 第11章 文件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第11章文件21世纪高等学校精品规划教材了解磁盘文件的概念和用途掌握文件指针的概念和文件指针变量的定义方法深刻理解文件的读、写、定位等基本操作的实现熟悉文件的打开、关闭、读、写、定位等函数的调用形式掌握文件操作在程序设计中的应用方法掌握编译预处理的基本概念和使用形式11.1文件概述【问题】数据在计算机中如何被保存和阅读?11.1.1文件的概念所谓“文件”是指一组相关数据的有序集合。这个数据集有一个名称,叫做文件名。例如:k:24000101program.c,其中k:24000101就是路径,program.c是
2、文件名。当需要使用文件的时候,需要将文件调入内存中。11.1.2文件的分类从用户使用的角度看,文件可分为普通文件和设备文件从文件编码和数据的组织方式来看,文件可分为ASCII码文件和二进制码文件。ASCII文件也称为文本文件,文件在磁盘中存放时每个字符占一个字节,每个字节中存放相应字符的ASCII码。内存中的数据存储时需要转换为ASCII码。二进制文件则不同,内存中的数据存储的时候不需要进行数据转换,存储介质上保存的数据采用与内存数据一致的表示形式存储。11.1.2文件的分类从C语言对文件的处理方法来看。旧的C版本(如
3、Unix系统下使用的C)有两种对文件的处理方法:一种叫“缓冲文件系统”,一种叫“非缓冲文件系统”。缓冲文件系统:系统自动地在内存区为每一个正在使用的文件名开辟一个缓冲区。从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘去。非缓冲文件系统:指系统不自动开辟确定大小的缓冲区,而由程序为每个文件设定缓冲区。11.2文件操作11.2.1FILE文件类型指针typedefstruct{shortlevel;/*缓冲区“满”或“空”的程度*/unsignedflags;/*文件状态标志*/charfd;/*
4、文件描述符*/unsignedcharhold;/*无缓冲区不读取字符*/shortbsize;/*缓冲区大小*/unsignedchar*buffer;/*数据缓冲区位置指针*/unsignedchar*curp;/*当前指针指向*/unsignedistemp;/*临时文件指示器*/shorttoken;/*用于有效性检查*/}FILE;有了FILE类型以后可以定义文件类型指针变量。例如:FILE*fp;标准设备文件C语言中的是由系统控制的,由系统自动打开和关闭,其文件结构指针由系统命名,用户无需说明即可直接使用,
5、例如:stdin标准输入文件(键盘)stdout标准输出文件(显示器)stderr标准错误输出文件(显示器)11.2.2文件的打开操作C语言用fopen()函数来实现文件的打开。fopen函数的调用方式一般为:FILE*fp;fp=fopen(文件名,文件使用方式);例如:fp=fopen("result.txt","r");11.2.2文件的打开操作打开文件方式文件使用方式含义"r"只读,文本以只读方式打开一个已有的文本文件。"w"只写,文本以只写方式建立一个新的文本文件。如果该文件已存在则将它删去,然后重新建立一个
6、新文件。"a"追加,文本以添加方式打开一个文本文件,在文件末尾添加。如果该文件不存在,则建立一个新文件后再添加。"rb"只读,二进制以只读方式打开一个已有的二进制文件。"wb"只写,二进制以只写方式打开一个二进制文件。"ab"追加,二进制以添加方式打开一个二进制文件。11.2.2文件的打开操作文件使用方式含义"r+"读写,文本以读写方式打开一个已有的文本文件。"w+"读写,文本以读写方式建立一个新的文本文件。"a+"读写,文本以读写方式打开一个文本文件,在文件末尾添加和修改,如果文件不存在,则建立一个新文件后再添加和修
7、改。"rb+"读写,二进制以读写方式打开一个已有的二进制文件。"wb+"读写,二进制以读写方式建立一个新的二进制文件。"ab+"读写,二进制以读写方式打开一个二进制文件。打开文件方式说明用以上方式可以打开文本文件或二进制文件,这是ANSIC的规定,即用同一种缓冲文件系统来处理文本文件和二进制文件。但目前使用的有些C编译系统可能不完全提供所有这些功能(例如有的只能用“r”、“w”、“a”方式),有的C版本不用“r+”、“w+”、“a+”而用“rw”、“wr”、“ar”等,请读者注意所用系统的规定。说明如果不能实现“打开”
8、的任务,fopen函数将会返回一个出错信息。出错的原因可能是:用“r”方式打开一个并不存在的文件;磁盘出故障;磁盘已满无法建立新文件等。此时fopen函数将带回一个空指针值NULL(NULL在stdio.h文件中已被定义为0)。常用下面的方法打开一个文件:if((fp=fopen("filename","r“))==NULL){
此文档下载收益归作者所有