- 1、本文档共77页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章文件教程
第八章;计算机信息系统中,根据信息的存储时间,可以分为临时性信息和永久性信息。简单来说,临时信息存储在计算机系统临时存储设备(例如存储在计算机内存),这类信息随系统断电而丢失。永久性信息存储在计算机的永久性存储设备(例如存储在磁盘和光盘)。永久性的最小存储单元为文件,因此文件管理是计算机系统中的一个重要的问题。一般来说,每台计算机都有一个操作系统负责管理计算机的各种资源。操作系统的文件系统负责将外部设备(如硬盘、打印机、光驱等)的信息组织方式进行统一规划,提供统一的程序访问数据的方法。
;对于操作系统来说,文件是存储在磁盘上的一个信息序列,操作系统为这个信息序列起一个名称,这个名称就叫做文件名(或文件标识符)。由于文件存储在外存中,外存的信息相对于内存来说是海量的,而且出于安全、规范的角度,不能够允许程序随意使用外存的信息,因此,当程序要使用文件时必须向操作系统申请使用,操作系统按规则授权给程序后程序才可以使用,使用完毕后,程序应该通知操作系统。
;8.1.1文件概述;由于内存的处理速度要比外存的快得多,在读写外存中的文件时需要用到缓冲区。所谓缓冲区是在内存中开辟的一段区域,当程序需要从外存中读取文件中的数据时,系统先读入足够多的数据到缓冲区中,然后程序对缓冲区中的数据进行处理。当程序需要写数据到外存文件中时,同样要先把数据送入缓冲区中,等缓冲区满了后,再一起存入外存中。所以程序实际上是通过缓冲区读写文件的。
根据缓冲区是否有计算机系统自动提供,可以分为缓冲文件系统和非缓冲文件系统。缓冲文件系统由系统提供缓冲区,非缓冲文件系统由程序员在程序指定缓冲区。大多数的C系统都支持这两种处理文件的方式,例如UNIX使用缓冲文件系统处理文本文件,使用非缓冲文件系统处理二进制文件,但ANSI C标准只选择了缓冲文件系统。本书只介绍缓冲文件系统的使用。
;从C语言的角度看,文件实际上是一个存储在外存中的由一连串字符(字节)构成的任意信息序列,即字符流。C程序需要按照特定的规则去访问这个序列。C语言中的文件是逻辑的概念,除了大家熟悉的普通文件外,所有能进行输入输出的设备都被看做是文件,如打印机、磁盘机和用户终端等。
终端文件中有3个文件是特殊的,每个C程序都用到。这3个文件是:标准输入文件(stdin)对应键盘,标准输出文件(stdout)对应终端屏幕,标准出错信息文件(stderr)对应终端屏幕。这3个文件对所有的C程序都是自动设置和打开的。当程序调用getchar()和scanf()时,就是从标准输入文件(键盘)读取信息;调用putchar()和printf()就是向标准输出文件(屏幕)输出信息。
;文本文件
文本文件是一种典型的顺序文件,其文件的逻辑结构又属于流式文件。文本文件是指以ASCII码方式(也称文本方式)存储的文件,更确切地说,英文、数字等字符存储的是ASCII码,而汉字存储的是机内码。文本文件中除了存储文件有效字符信息,包括能用ASCII码字符表示的回车、换行等信息外,不能存储其他任何信息,因此文本文件不能存储声音、动画、图像、视频等信息。;二进制文件
文件作为信息存储的一个基本单位,根据其存储信息的方式不同,分为文本文件(又名ASCII文件)和二进制文件。如果将存储的信息采用字符串方式来保存,那么称此类文件为文本文件。如果将存储的信息严格按其在内存中的存储形式来保存,则称此类文件为二进制文件。例如下面的一段信息:
“This is 1000”
在C语言中,分别采用字符串和整数来表示,如下:
char szText[]=”This is ”; int a=1000;
;既然文件的数据存储在外存中,其存取访问方式肯定不同于前面讨论的数据类型。文件的使用方式与操作系统有着密切的关系。
C语言对缓冲文件系统的使用是通过一系列库函数来实现,读写文件必须遵循一定的步骤。图8-2是一个C语言操作文件过程的示意图。
;8.1.3文件的操作流程;8.1.4文件的定义;引入FILE类型之后,可以定义FILE变量来存储文件的基本信息。下面的语句定义了一个文件FILE类型的变量oFile1。
FILE oFile1;
由于FILE类型为结构体类型,因此FILE类型变量之间,不能简单进行赋值运算。为了提高运行效率,文件处理函数基本上以FILE指针变量作为函数形式参数或返回值。
在C语言中,文件输入输出处理通过一组库函数来实现,函数原型包含在“stdio.h”中,例如:
FILE * fdopen (int handle, char *type);
int fgetchar (void);
int flushall (void);
int fputchar (int c);
;一般来讲,以f开头的函数均为文件处理函数。文件处理函数可以分为如下几类
文档评论(0)