欢迎来到天天文库
浏览记录
ID:50320869
大小:1.26 MB
页数:53页
时间:2020-03-08
《C语言程序设计教程 教学课件 作者 葛素娟第十二章 文件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十二章文件一、文件概述二、文件指针三、文件的打开与关闭四、文件的读写五、文件的定位六、出错的检测七、电动车电池管理管理之二在前面的章节中,我们已经学习了变量、数组、链表等等,它们都可以用来保存数据。但是,这些数据都是在内存中的,当程序运行结束时,这些数据会全部消失。如何能将数据永久保存呢?本章将介绍文件,文件能实现数据的永久保存。一、文件概述1、文件的概念与文件的存储前面所用到的输入输出,都是以终端为对象的,即从终端键盘输入数据,运行结果输出到终端显示器上。在程序运行时,常常需要将一些数据输出到磁盘上保存起来,以后需要时再从磁盘中输入到内存,这就要用到磁盘文件。文件是保存在外存储器(通常是硬
2、盘、U盘)上一组数据的有序集合。从外存储器将文件输入到内存的操作叫读操作,从内存将数据输出到文件的操作叫写操作。C语言把文件看作是一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。根据数据的组织形式,可分为ASCII文件和二进制文件。ASCII文件又称文本文件(.txt),它的每一个字节放一个ASCII代码,代表一个字符。二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。如果有一个整数10000,在内存中占4个字节,如果按ASCII码形式输出,则占5个字节,而按二进制形式输出,在磁盘上只占4个字节,如图12-1所示。(int占4个字节、10000有5个符号,用
3、ASCII码表示要用5个字节)用ASCII码形式输出与字符一一对应,一个字节代表一个字符,因而便于对字符进行逐个处理,也便于输出字符。但一般占存储空间较多,而且要花费转换时间(二进制形式与ASCII码间的转换)。用二进制形式输出数据,可以节省外存空间和转换时间,但一个字节并不对应一个字符,不能直接输出字符形式。2、文件的存取方式ANSIC标准采用缓冲文件系统来处理文件,即由系统自动地在内存区为每一个正在使用的文件开辟一个缓冲区,缓冲区的大小由具体的C版本确定,一般为512字节(磁盘每个扇区的大小为512字节)。系统将需要传送到外存储器中的数据先存放到这部分空间,等到数据装满以后,再送到外存储器
4、中。同样,对于从文件中读入数据到内存时,也要先将文件的数据装入缓冲区,待缓冲区装满以后,再将数据送往内存的数据区。使用缓冲文件系统可以大大提高文件操作的速度及延长外部设备的寿命。3、C语言的设备文件在C语言中,把与主机相连的各种外部设备,如键盘、显示器等也看成是一个文件,把向显示器的输出看成是对该设备文件的写操作,而将从键盘的输入看成是对该设备文件的读操作。显示器被定义为标准输出文件,键盘被定义为标准输入文件。如:printf是向标准输出设备显示器输出数据,scanf是从标准输入设备键盘输入数据。标准输入文件stdin(键盘)、标准输出文件stdout(显示器)和标准出错输出stderr(出错
5、信息)操作由系统自动打开,不需使用文件指针。而对用户的文件,则需要使用文件指针。二、文件指针1、FILE类型FILE类型是由系统定义的一种结构体类型,专门用来描述文件的相关信息。VC系统中,FILE类型在“stdio.h”中定义如下:struct_iobuf{char*_ptr;//文件输入的下一个位置int_cnt;//当前缓冲区的相对位置char*_base;//文件的起始位置int_flag;//文件状态标志int_file;//文件的有效性验证int_charbuf;//检查缓冲区状况,如果无缓冲区则不读取int_bufsiz;//缓冲区大小char*_tmpfname;//临时文件名
6、};typedefstruct_iobufFILE;对我们而言,不必了解其中细节,知道使用FILE类型定义文件指针就可以了。2、文件指针文件指针定义的一般形式为:FILE*文件指针变量名;例如:FILE*fp;注意:定义了文件指针变量fp以后,就意味着系统开辟了一个FILE类型的结构体空间,可以存放文件的相关信息。但此时,仅仅是定义了一个文件指针,还未与任何文件建立联系。换句话说,此时FILE类型的结构体空间还没存放任何文件信息。以后,必须调用fopen函数为文件指针fp和文件建立联系,文件指针才指向打开文件的入口地址,通过文件指针找到与它相关的文件。三、文件的打开和关闭在C程序中操作文件,要
7、先使用fopen函数打开文件;操作完毕后,要使用fclose函数关闭文件,这两个函数均在“stdio.h”中定义。1、文件的打开fopen函数调用的一般形式为:FILE*fp;fp=fopen("文件名","打开文件方式");例如:FILE*fp;fp=fopen("c:\file\abc.txt","w");如果成功打开,fopen函数返回指向c:\file\abc.txt文件的指针(地
此文档下载收益归作者所有