第十章文件 第十章文件 10.1文件 10.2缓冲文件系统基础 BACK
第十章 文 件 第十章 文 件 10.1 文件 10.2 缓冲文件系统基础
第十章文件 10.1文件 10.1.1文件的概念 磁盘文件在DOS管理中被定义为存贮在外部介质上的程序 或数据的集合,是一批逻辑上有联系的数据每个文件都有 个文件名作为标识,每个文件在磁盘中的具体存放位置、格式 都由操作系统中的文件系统管理,也就是说,操作系统是以 文件为单位对程序或数据进行管理的。编辑后存于磁盘上的源 程序文件*C,经编译后得到的目标文件*OBJ,连接之后形成 的可执行文件*EXE等
第十章 文 件 10.1 文 件 10.1.1 文件的概念 磁盘文件在DOS管理中被定义为存贮在外部介质上的程序 或数据的集合, 是一批逻辑上有联系的数据每个文件都有一 个文件名作为标识,每个文件在磁盘中的具体存放位置、格式 都由操作系统中的文件系统管理, 也就是说,操作系统是以 文件为单位对程序或数据进行管理的。编辑后存于磁盘上的源 程序文件*.C,经编译后得到的目标文件*.OBJ,连接之后形成 的可执行文件*.EXE等
第十章件 在C语言中文件的含义更为广泛,不仅包含以上所述的 磁盘文件,还包括一切能进行输入/输岀的终端设备,它们被 看成是设备文件。如键盘常称为标准输入文件,显示器称为 标准输出文件。 文件是由磁盘文件和设备文件组成的。作为磁盘文件之 一的数据文件是本章学习的主要对象。数据文件可以看作是 C中最后一种数据类型,是C语言重要的组成部分 根据文件内数据的组织形式,文件可分为文本(text) 文件和二进制文件。文本文件又称为ASCⅡ码文件,它的每 字节存放一个字符的ASC码
第十章 文 件 在C语言中文件的含义更为广泛,不仅包含以上所述的 磁盘文件,还包括一切能进行输入/输出的终端设备,它们被 看成是设备文件。如键盘常称为标准输入文件,显示器称为 标准输出文件。 文件是由磁盘文件和设备文件组成的。作为磁盘文件之 一的数据文件是本章学习的主要对象。数据文件可以看作是 C中最后一种数据类型, 是C语言重要的组成部分。 根据文件内数据的组织形式,文件可分为文本(text) 文件和二进制文件。文本文件又称为ASCII码文件,它的每 一个字节存放一个字符的ASCII码
第十章件 10.1.2数据流 数据流是对数据输入输出行为的一种抽象。各种各样的终 端设备或磁盘文件的细节是非常复杂多样的直接对它们编程将 会非常繁琐。引入数据流的概念有效地解决了这一难题。只要 建立了输入输出数据流,编程者在应用程序中就不需要关心底 层输入输出设备或是任何磁盘文件的具体细节差异。程序中要 输入数据,只需从输入数据流中读入;输出数据只需向输出数 据流中写出即可,这样就使程序完全与具体硬件资源脱离了关 系,也就是说数据流使C程序与具体系统完全不相关,使C程 序可以非常方便地移植
第十章 文 件 10.1.2 数据流 数据流是对数据输入输出行为的一种抽象。各种各样的终 端设备或磁盘文件的细节是非常复杂多样的直接对它们编程将 会非常繁琐。引入数据流的概念有效地解决了这一难题。只要 建立了输入输出数据流,编程者在应用程序中就不需要关心底 层输入输出设备或是任何磁盘文件的具体细节差异。程序中要 输入数据,只需从输入数据流中读入;输出数据只需向输出数 据流中写出即可,这样就使程序完全与具体硬件资源脱离了关 系,也就是说数据流使C程序与具体系统完全不相关,使C程 序可以非常方便地移植
第十章件 1013C的文件系统及其与流的关系 C的文件系统可分为缓冲文件系统和非缓冲文件系统两 类。所谓缓冲文件系统,又称高级磁盘输入输出系统。在调 用这种文件处理函数时,会自动在用户内存区中为每一个正 在使用的文件划出一片存贮单元,称为开辟一个缓冲区 设立缓冲区的原因是磁盘的读写速度比内存的处理速度 要慢很多,而且磁盘驱动器是机电设备,定位精度比较差, 所以磁盘数据存取要以扇区(磁盘上某磁道中的一个弧形段, 通常存放固定数量的数据)或者簇(由若干扇区组成)为单 位
第十章 文 件 10.1.3 C的文件系统及其与流的关系 C的文件系统可分为缓冲文件系统和非缓冲文件系统两 类。所谓缓冲文件系统,又称高级磁盘输入输出系统。在调 用这种文件处理函数时,会自动在用户内存区中为每一个正 在使用的文件划出一片存贮单元,称为开辟一个缓冲区。 设立缓冲区的原因是磁盘的读写速度比内存的处理速度 要慢很多,而且磁盘驱动器是机电设备,定位精度比较差, 所以磁盘数据存取要以扇区(磁盘上某磁道中的一个弧形段, 通常存放固定数量的数据)或者簇(由若干扇区组成)为单 位
第十章文件 102缓冲文件系统基础 般缓冲文件操作有三个必需的步骤: (1)在使用文件前要调用打开函数将文件打开,若打开 失败,则返回一个空指针;若打开正常,可以得到一个文件 指针,并利用它继续对文件操作。 (2)可调用各种有关函数,利用该指针对文件进行具体 处理,一般要对文件进行读或写操作 (3)在文件用完时,应及时调用关闭函数来关闭文件, 切断数据流,防止数据遗失或误操作破坏文件内容
第十章 文 件 10.2 缓冲文件系统基础 一般缓冲文件操作有三个必需的步骤: (1) 在使用文件前要调用打开函数将文件打开, 若打开 失败,则返回一个空指针;若打开正常,可以得到一个文件 指针,并利用它继续对文件操作。 (2) 可调用各种有关函数,利用该指针对文件进行具体 处理,一般要对文件进行读或写操作。 (3) 在文件用完时,应及时调用关闭函数来关闭文件, 切断数据流,防止数据遗失或误操作破坏文件内容
第十章文件 1021文件指针 文件类型FIE不是C语言的新类型,它是用 typedef定义 出来的有关文件信息的一种结构体类型。如 Turbo c20版的 stdio h文件中有如下的定义 typedef struct i short /*缓冲区“满”或“空”的程度*/ unsigned flags, /*文件状态标志* ar fd /*文件描述符* unsigned char hold /*如无缓冲区不读取字符*
第十章 文 件 10.2.1 文件指针 文件类型FILE不是C语言的新类型,它是用typedef定义 出来的有关文件信息的一种结构体类型。如Turbo C 2.0版的 stdio.h文件中有如下的定义: typedef struct { short level; /* 缓冲区“满”或“空”的程度 */ unsigned flags; /* 文件状态标志 */ char fd; /* 文件描述符 */ unsigned char hold; /* 如无缓冲区不读取字符 */
第十章文件 short /*缓冲区的大小* unsigned char*bur;/*数据缓冲区的位置*/ unsigned char *curp; /*当前工作指针* unsigned Istemp *临时文件,指示器* short token /*用于有效性检查* 3 FILE
第十章 文 件 short bsize; /* 缓冲区的大小 */ unsigned char *buffer; /* 数据缓冲区的位置 */ unsigned char *curp; /* 当前工作指针 */ unsigned istemp; /* 临时文件, 指示器 */ short token; /* 用于有效性检查 */ } FILE;
第十章文件 10.22打开文件( fopen函数) 打开函数 fopen(O的调用方式是 FILE fp fp=- fopen(文件名,使用文件方式) 例如 fp=fopen("Al.Dat","r")
第十章 文 件 10.2.2 打开文件(fopen函数) 打开函数fopen() 的调用方式是: FILE *fp; fp=fopen(文件名, 使用文件方式); fp=fopen("A1.DAT", "r");
第十文件 表121文件使用方式 文件使用方式 含义 “r”(只读) 为输入打开一个文本文件 w”(只写) 为输出打开一个文本文件 a”(追加) 向文本文件尾增加数据 “rb”(只读) 为输入打开一个二进制文件 wb”(只写) 为输出打开一个二进制文件 “ab”(追加) 向二进制文件届增加数据 “x+”(读写) 为读/写打开一个文本文件 w+”(读写) 为读/写建立一个新的文本文件 a+”(读写) 为读/写打开一个文本文件 “rb+”(读写) 为读/写打开一个二进制文件 wb+”(读写) 为读/写建立一个新的二进制文件 ab+”(读写) 为读/写打开一个二进制文件
第十章 文 件 表 12.1 文件使用方式