第10章文件 本章要点 10.1文件的基本概念概述 10.2文件类型及其指针 10.3文件的打开和关闭 104文件的输入和输出 10.5文件的定位函数 10.6出错检测函数
第10章文件 本章要点 10.1 文件的基本概念概述 10.2 文件类型及其指针 10.3 文件的打开和关闭 10.4 文件的输入和输出 10.5 文件的定位函数 10.6 出错检测函数
本章要点 ◆文件中数据的组织形式:文本文件、二进制文件 ◆文件的打开函数和关闭函数 ◆文件的输入和输出函数 ◆缓冲文件操作函数的使用
❖ 本章要点 ❖ ◆ 文件中数据的组织形式:文本文件、二进制文件 ❖ ◆ 文件的打开函数和关闭函数 ❖ ◆ 文件的输入和输出函数 ❖ ◆ 缓冲文件操作函数的使用
10.1文件的基本概念 10.1.1文件的概念及分类 1.文件的概念 令文件是程序设计中的一个重要概念。所谓“文件”是指一组 相关数据的有序集合。这个数据集的名称,就叫做文件。实 际上在前面的各章中我们已经多次使用了文件,例如源程序 文件、目标文件、可执行文件、库文件(头文件)等
10.1文件的基本概念 ❖ 10.1.1文件的概念及分类 ❖ 1.文件的概念 ❖ 文件是程序设计中的一个重要概念。所谓“文件”是指一组 相关数据的有序集合。这个数据集的名称,就叫做文件。实 际上在前面的各章中我们已经多次使用了文件,例如源程序 文件、目标文件、可执行文件、库文件(头文件)等
2文件的分类 1)按数据格式分类。 冷C语言把文件看成是一个字符(字节)的序列,即由一个 个字符(字节)数据组成,按数据格式可分为二进制文件 (二进制流)和文本文件(字符流),虽然它们都是字节序 列,但它们表示数据的形式和存储方式不同,所以C语 言对它们要区别处理。 2)按读写方式分类 按文件的读写方式,可以把文件分为“顺序文件” 和“随机文件”。对顺序文件来说,读写必须从头开始 对随机文件来说,读写的过程是随机的
2.文件的分类 1)按数据格式分类。 ❖ C语言把文件看成是一个字符(字节)的序列,即由一个 个字符(字节)数据组成,按数据格式可分为二进制文件 (二进制流)和文本文件(字符流),虽然它们都是字节序 列,但它们表示数据的形式和存储方式不同,所以C语 言对它们要区别处理。 2)按读写方式分类。 ❖ 按文件的读写方式,可以把文件分为“顺序文件” 和“随机文件”。对顺序文件来说,读写必须从头开始。 对随机文件来说,读写的过程是随机的
10.12文件缓冲区 C系统对文件的处理方式有两种:缓冲文件和非缓冲文件。 (1)缓冲文件 令所谓缓冲文件系统是指系统自动地在内存区为每个正在使 用的文件开辟一个缓冲区。当从内存向磁盘输出数据时, 先将数据送到内存缓冲区,待缓冲区装满后,再一起送到 磁盘文件保存;当从磁盘文件读入数据时,则一次从磁盘 文件中将一批数据输入到内存缓冲区,然后再从缓冲区逐 个地将数据送到程序数据区。 程序数据Ⅸ 外在 输出變冲 输入變冲Ⅸ 输入
10.1.2 文件缓冲区 ❖ C 系统对文件的处理方式有两种:缓冲文件和非缓冲文件。 (1)缓冲文件 ❖ 所谓缓冲文件系统是指系统自动地在内存区为每个正在使 用的文件开辟一个缓冲区。当从内存向磁盘输出数据时, 先将数据送到内存缓冲区,待缓冲区装满后,再一起送到 磁盘文件保存;当从磁盘文件读入数据时,则一次从磁盘 文件中将一批数据输入到内存缓冲区,然后再从缓冲区逐 个地将数据送到程序数据区
(2)非缓冲文件 所谓非缓冲文件系统是指系统不自动开辟一个内存 缓冲区,而由用户根据所处理数据量的大小在程序中设 置数据缓冲区
(2)非缓冲文件 ❖ 所谓非缓冲文件系统是指系统不自动开辟一个内存 缓冲区,而由用户根据所处理数据量的大小在程序中设 置数据缓冲区
1013设备文件 由于计算机中的输入输出设备的作用是输入输出数据, 其功能和文件的读取数据/写入数据相似,所以操作系 统把输入/输出设备也看成文件,称为设备文件。 计算机的常用输入设备是键盘,称标准输入设备; 常用输出设备是显示器,称标准输出设备;还有二个专 用于输出错误信息的标准错误输出设备,也是显示器。 从输入设备上读取数据,可以看成是从输入设备文 中读数据:将数据写到输出设备上,可以看成是写到 出设备文件中
10.1.3 设备文件 ❖ 由于计算机中的输入/输出设备的作用是输入输出数据, 其功能和文件的读取数据/写入数据相似,所以操作系 统把输入/输出设备也看成文件,称为设备文件。 ❖ 计算机的常用输入设备是键盘,称标准输入设备; 常用输出设备是显示器,称标准输出设备;还有一个专 用于输出错误信息的标准错误输出设备,也是显示器。 ❖ 从输入设备上读取数据,可以看成是从输入设备文 件中读数据:将数据写到输出设备上,可以看成是写到 输出设备文件中
102文件类型及其指针 当在C语言程序中操作一个实际的磁盘文件时,需要一个流指针 来代表这个文件。流指针其实是一个结构体类型的指针,这个结 构体被定义在头文件 stdio. h中,它详细描述 ¢流的性质,箕 形式如下 typedef struct short leve;/缓冲区“满”或者“空”的程度* unsigned flags;/户文件状态标志 char fd;/*文件描述符* unsigned char hold;/*如果无缓冲区则不读取字符* short bsize;/缓冲区的大小* unsigned char*buffer;/数据缓冲区的位置* unsigned char'curp;"指针,当前的指向 unsigned istemp;/临时文件指示器* short token;/用于有效性检查 F‖LE
10.2 文件类型及其指针 当在C语言程序中操作一个实际的磁盘文件时,需要一个流指针 来代表这个文件。流指针其实是一个结构体类型的指针,这个结 构体被定义在头文件stdio.h中,它详细描述了一个流的性质,其 形式如下: typedef struct { short level; /*缓冲区“满”或者“空”的程度*/ unsigned flags; /*户文件状态标志*/ char fd; /*文件描述符*/ unsigned char hold; /*如果无缓冲区则不读取字符*/ short bsize; /*缓冲区的大小*/ unsigned char*buffer; /*数据缓冲区的位置*/ unsigned char*curp; /*指针,当前的指向*/ unsigned istemp; /*临时文件指示器*/ short token; /*用于有效性检查*/ }FILE;
103文件的打开和关闭 10.3.1文件打开函数 文件打开函数 fopen0的原型是 FILE fopen (char name, char mode) 该函数是指针型函数,调用后返回文件类指针。有两个函数参 数,都是字符型指针,其中name用来接收“文件名”(字符 串),mode用来接收“文件操作方式”(字符串)。因此该函 数调用方式是 p= fopen("文件名","文件操作方式") 其中, “文件指针名”fp必须是被说明为FLE类型的指针变量 “文件名”是被打开文件的文件名; 文件操作方式"是指文件的类型和操作要求
10.3 文件的打开和关闭 10.3.1 文件打开函数 文件打开函数fopen()的原型是: FILE*fopen(char*name,char*mode); 该函数是指针型函数,调用后返回文件类指针。有两个函数参 数,都是字符型指针,其中name用来接收“文件名”(字符 串),mode用来接收“文件操作方式”(字符串)。因此该函 数调用方式是: fp=fopen("文件名" , "文件操作方式"); 其中, “文件指针名” fp必须是被说明为FILE 类型的指针变量; “文件名”是被打开文件的文件名; "文件操作方式"是指文件的类型和操作要求
mode的取值与所代表的含义 type 含义 」文件不存在时|文件存在时 是号方打开不*交件需女开交团件内至 以追加方式打开一个文本文件建立新文件 打开文件,只能从文件屠 向文件追加数据 以读写方式打开一个文本文件|返回锴误标志打开文件 以读/写方式建立一个新的文本 打开文件,原文件内容清 文件 建立新文件 a+‖以读/写方式打开—个文本文件|建立新文件 打开文件,可从文件中读 取或往文件中写人数据 rb 以只读方式打开一个二进制文件返回错误标志打开文件 wb 以只写方式打开一个二进制文件建立新文件 打开文件,原文件内容清 以追加方式打开一个二进制文件建立新文件 打开文件,从文件尾向文 件追加数据 以读/写方式打开一个二进制女返回错误标志打开文件 件 wb+以读/写方式打开一个新的二进|建立新文件 打开文件,原文件内容清 制文件 以写方式打开一个进制文建文新文件 打开文件,可从文件读取 件 或往文件中写人数据
mode的取值与所代表的含义