欢迎来到天天文库
浏览记录
ID:50043087
大小:437.00 KB
页数:104页
时间:2020-03-08
《C及C++程序设计 第3版 教学课件 张富 第13章-磁盘文件操作(IO系统).ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第13章磁盘文件操作(I/O系统)文件概述13.1打开文件和关闭文件13.2文件的读和写13.3小结13.5文件的定位与文件的随机存取13.413.1文件概述13.1.1C语言文件的概念文件(file)是存储在外部介质(如磁盘,磁带)上的,以惟一的名字作为标记的数据集合。操作系统是以文件为单位对数据进行管理的。与主机相连的输入输出设备,其作用也是从设备上读取数据和将数据写到设备上,所以,也把输入输出设备看作是文件。给每个文件起一个名字。完整的磁盘文件名的组成如下:盘符:路径(基本)文件名.扩展名操作系统支持对文件的各项管理,
2、文件的命名应符合操作系统的规定。文件操作的主要有两个,一是从文件取出数据存入内存变量中,这就是文件的读操作。二是将内存变量中存放的数据存放到文件中,这就是文件写操作。统称为文件的I/O操作。由于文件是受操作系统管理的,应用程序使用某一文件时,它需要向操作系统提出建立与文件的联系;使用结束时,通知操作系统切断与文件的联系。这是两个过程,前者称为打开文件,后者称为关闭文件。在C语言中,文件的打开与关闭,文件的读操作与写操作,都是由C语言提供的系统函数完成的。13.1.2二进制文件和文本文件文件数据的存储,一般有两种形式。一种是以A
3、SCII码的形式按字节存储的。这样的文件叫做文本文件(textfile),又叫ASCII文件。另一种是以在内存中的二进制数形式存储的文件,称为二进制文件。13.1.3顺序文件和随机文件按照文件内数据处理方式的不同,文件又分为顺序文件和随机文件。顺序文件是按照数据存储的顺序连续地处理(读或写)每一个数据。为了处理文件中某个数据,必须从文件的第一个数据开始,顺序取完指定数据前所有的数据,才能处理该数据。随机文件处理数据时,可以在文件中任意指定的位置读写数据。13.1.4缓冲文件系统和非缓冲文件系统按系统对文件的支持方式的不同,分为
4、缓冲文件系统和非缓冲文件系统。C语言支持这两种文件系统。所谓缓冲文件系统(bufferedfilesystem)是指在进行I/O操作时,系统自动为每个打开的文件开辟一个内存缓冲区。采用缓冲区的目的是,匹配快速的CPU和慢速的磁盘操作,提高CPU的工作效率,减少访问磁盘的次数。图13-1所示给出缓冲文件系统的示意图。图13-1数据通过缓冲区读取示意图所谓非缓冲文件系统(unbufferedfilesystem)是指系统不自动开辟内存缓冲区,而是由程序自己为每个文件设定缓冲区。13.1.5文件型指针在ANSI文件I/O系统中,每个
5、被使用的文件,都在内存开辟一个区,用于存放与文件相关的信息,如文件号(文件在操作系统中被管理的代号),文件的读写状态,文件缓冲区的地址,以及当前的读写缓冲区数据的位置等。这些信息存放在一个结构型变量中。这个结构类型是系统定义的,并通过typedef将该结构型起名为FILE。FILE结构型定义在stdio.h文件中。其定义如下:typedefstruct{int_fd;int_cleft;int_mode;char*nextc;char*buff;}FILE;程序使用文件,首先必须定义一个FILE型结构的指针变量。这个指向FIL
6、E结构型的指针称为文件型指针。通过这个指针可以实现对文件的操作。定义文件指针变量的一般形式为:FILE*文件型指针名;可以同时定义多个文件型指针。13.2打开文件和关闭文件打开文件的意思是使定义的文件型指针指向打开的文件,包括为文件型变量分配内存空间,在内存为文件建立缓冲区,将文件和缓冲区的相关信息写入文件型变量的各成员中。文件使用完后,系统将缓冲区中的数据做相应的处理(如将数据写入文件等),然后,释放缓冲区。这个过程叫做关闭文件。13.2.1打开文件函数打开文件函数fopen()的格式为:FILE*fopen(char*fi
7、lename,char*mode)其中参数filename是字符型指针,它指向的字符串是要打开的文件名。参数mode也是字符型指针,它指向的字符串是文件的使用方式,称为打开模式。文件的使用方式字符串共有12个,其中6个是用于文本文件的,6个用于二进制文件的。这些字符串及其功能如表13-1所示。fopen()函数的功能是,以mode方式打开filename指定的文件,自动为该文件分配一个内存缓冲区。如果正确打开文件,函数返回一个指向文件型变量的地址。用户可以用自己定义的文件型指针接受这个地址。此后,便可利用这个文件型指针对文件进
8、行读写操作。如果打开文件操作不成功(出错),函数返回空指针(“NULL”),其值为0。因此,打开文件时,一般要对返回值进行判断,以便知道文件是否被成功打开。如果没打开,就不能使用这个文件。函数fopen()定义在头文件stdio.h。13.2.2关闭文件函数关闭文件函数fcl
此文档下载收益归作者所有