第9章文件操作 ◆文件 ◆操作系统管理数据的基本单位 ◆存储在外存储器上的数据的集合 令使用文件的目的 令程序与数据分离:数据文件的改动不引起程序的改动 令数据共享:不同程序可以访问同一数据文件中的数据 ◆能长期保存程序运行的中间数据或结果数据 ☆☆第章文件操作
☆☆ 第9章 文件操作 1 ❖文件 ❖操作系统管理数据的基本单位 ❖存储在外存储器上的数据的集合 ❖使用文件的目的 ❖程序与数据分离:数据文件的改动不引起程序的改动 ❖数据共享:不同程序可以访问同一数据文件中的数据 ❖能长期保存程序运行的中间数据或结果数据 第9章 文件操作
第9章文件操作 本章要求: 掌握C语言中文件的概念 掌握打开文件的不同模式 掌握使用各种操作函数对文件进行读写的方法 >能编写与文件有关的程序 本章重点: 掌握文件的各种操作函数,能对文件进行读写数据操作。 本章难点: 掌握文件的各种操作函数,能对文件进行读写数据操作。 ☆☆第章文件操作
☆☆ 第9章 文件操作 2 本章要求: ➢掌握C语言中文件的概念 ➢掌握打开文件的不同模式 ➢掌握使用各种操作函数对文件进行读写的方法 ➢能编写与文件有关的程序 本章难点: 掌握文件的各种操作函数,能对文件进行读写数据操作。 本章重点: 掌握文件的各种操作函数,能对文件进行读写数据操作。 第9章 文件操作
911文本文件与二进制文件 C语言把文件看作一个字节序列,即由一连串的字节 组成,称为“流”,每一个字节都可以单独读取,每 一个文件或者以文件结束标志结束,或者在特定的字 节号处结束。 按数据的组织形式分类 1、文本文件 又称ASCI文件,每个字节对应一个字符,用于存放该字 符的ASCI码,输入输出时对字符逐个处理。 文本文件由文本行组成,每行中可以有0个或多个字符, 并以行终止符‘mn结尾,文件结尾是文件结束标志,该标志 后再没有字符出现了。 2、二进制文件 数据按其在内存中的存储形式原样存放 ☆☆第9章文件操作
☆☆ 第9章 文件操作 3 9.1.1 文本文件与二进制文件 ◼C语言把文件看作一个字节序列,即由一连串的字节 组成,称为“流” ,每一个字节都可以单独读取,每 一个文件或者以文件结束标志结束,或者在特定的字 节号处结束。 ◼按数据的组织形式分类 1、文本文件 ➢ 又称ASCII文件,每个字节对应一个字符,用于存放该字 符的ASCII码,输入输出时对字符逐个处理。 ➢ 文本文件由文本行组成,每行中可以有0个或多个字符, 并以行终止符‘\n’结尾,文件结尾是文件结束标志,该标志 后再没有字符出现了。 2、二进制文件 ➢ 数据按其在内存中的存储形式原样存放
【例】整数10000 内存存储形式 ASCI形式 0011000100110000001100000011000000110000 0010011100010000 001001l00010000 进制形式 二进制文件特点: 速度快、便于存放 文本文件特点: 中间结果 速度慢、便于对字符操作 ☆☆第章文件操作
☆☆ 第9章 文件操作 4 00100111 00010000 内存存储形式 00100111 00010000 二进制形式 00110001 00110000 00110000 00110000 00110000 ASCII形式 文本文件特点: 速度慢、便于对字符操作 二进制文件特点: 速度快、便于存放 中间结果 【例】整数10000
912缓冲文件系统 缓冲文件系统:系统自动地为每一个正在使用的文 件在内存中开辟一个缓冲区。 输出文件缓冲区 程序 文件 数据区 输入文件缓冲区 对输入输出进行缓冲,可以大块地转移信息,而不 再是一个个字节进行操作。 内存缓冲区的大小,影响着操作外存的次数。内存 缓冲区越大,则操作外存的次数就少,执行速度就快、 效率高。 ☆☆第9章文件操作
☆☆ 第9章 文件操作 5 9.1.2 缓冲文件系统 • 缓冲文件系统:系统自动地为每一个正在使用的文 件在内存中开辟一个缓冲区。 • 对输入输出进行缓冲,可以大块地转移信息,而不 再是一个个字节进行操作。 • 内存缓冲区的大小,影响着操作外存的次数。内存 缓冲区越大,则操作外存的次数就少,执行速度就快、 效率高。 文件 程序 数据区 输出文件缓冲区 输入文件缓冲区
913文件类型指针 C语言的缓冲文件系统中,用文件类型指针来表示文件。 定义文件类型指针的一般形式: FILE*指针变量名; C编译系统定义的一种结构体类型, 指针变量用于指向一个文件, 其中的成员用于存放有关文件的一 实际上是用于存放文件缓冲区 些信息(文件名、文件状态和文件 的首地址。 当前读写位置等) FILE结构体是在头文件中定义的,对文件操作的程 序,在最前面都应写上文件包含命令:# nclude C语言通过文件指针变量对文件进行打开、读、写及关闭操作。 ☆☆第9章文件操作
☆☆ 第9章 文件操作 6 9.1.3 文件类型指针 • C语言的缓冲文件系统中,用文件类型指针来表示文件。 • 定义文件类型指针的一般形式: FILE *指针变量名; C编译系统定义的一种结构体类型, 其中的成员用于存放有关文件的一 些信息(文件名、文件状态和文件 当前读写位置等) 指针变量用于指向一个文件, 实际上是用于存放文件缓冲区 的首地址。 • FILE结构体是在头文件中定义的,对文件操作的程 序,在最前面都应写上文件包含命令:#include • C语言通过文件指针变量对文件进行打开、读、写及关闭操作
913文件类型指针 FIE结构体类型在头文件 stdio. h中定义如下 typedef struct short level /文件缓冲区占用程度 unsigned fl /文件状态标志 char /文件描述符* unsigned char hold /*若无缓冲区不读取字符* short bsize: /文件缓冲区大小 unsigned char* buffer;/数据缓冲区的位置* unsigned char*curp;/指针当前的位置 unsigned istemp;/临时文件指示器* short token;/用于操作有效性检查* 3 FILE; /文件类型符 在编程时不必关心FLE结构的具体细节,只需在使用O函数 时用这个文件指针变量来指定所操作的文件。 ☆☆第9章文件揉作
☆☆ 第9章 文件操作 7 FILE结构体类型在头文件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; /*文件类型符*/ 9.1.3 文件类型指针 •在编程时不必关心FILE结构的具体细节,只需在使用I/O函数 时用这个文件指针变量来指定所操作的文件
913文件类型指针 在C语言程序中使用文件,需要完成以下工作: 1)声明一个FE类型的文件指针变量; 2)打开文件: 调用 fopen函数将此文件指针变量和某一个实际的磁盘文件相 联系。要求指定文件名,并且说明对该文件是输入操作还是 输出操作。 3)读写文件: 调用适当的文件操作函数完成必要的JO操作。 对输入文件来说,函数从文件中将数据读取至程序中; 对输出文件来说,函数将程序中的数据转移到文件中去 4)关闭文件: 调用 fclose函数表明文件操作结束,断开文件指针与实际文件 之间的联系。 ☆☆第9章文件操作 8
☆☆ 第9章 文件操作 8 9.1.3 文件类型指针 在C语言程序中使用文件,需要完成以下工作: 1)声明一个FILE类型的文件指针变量; 2)打开文件: 调用fopen函数将此文件指针变量和某一个实际的磁盘文件相 联系。要求指定文件名,并且说明对该文件是输入操作还是 输出操作。 3)读写文件: 调用适当的文件操作函数完成必要的I/O操作。 对输入文件来说,函数从文件中将数据读取至程序中; 对输出文件来说,函数将程序中的数据转移到文件中去。 4)关闭文件: 调用fclose函数表明文件操作结束,断开文件指针与实际文件 之间的联系
92文件的打开与关闭 921文件的打开 打开文件,实际上 打开文件使用函数 fopen 是建立文件的各种有 其调用的一般形式为: 关信息,并使文件指 针指向该文件; 文件指针名=open(文件名","文件打开模式") 缓冲文件系统借助 文件指针来对文件进 行管理和访问,既可 需要打开的 确定文件的 文件的名字 以读写字符、字符串、 数据操作方式 格式化数据,也可以 “文件名”和“文件打开模式”都 读写二进制数据。 是字符串常量或字符数组。 ☆☆第9章文件操作
☆☆ 第9章 文件操作 9 9.2 文件的打开与关闭 9.2.1 文件的打开 打开文件,实际上 是建立文件的各种有 关信息,并使文件指 针指向该文件; 缓冲文件系统借助 文件指针来对文件进 行管理和访问,既可 以读写字符、字符串、 格式化数据,也可以 读写二进制数据。 • “文件名”和“文件打开模式”都 是字符串常量或字符数组。 文件指针名=fopen("文件名","文件打开模式") 需要打开的 文件的名字 确定文件的 数据操作方式 打开文件使用函数fopen 其调用的一般形式为:
举例 FILE *fp fp=fopen( source. txt",r); 作用: 以读的方式(“r”模式即表示读“read”)打开当前目录下 文件名为 source. txt的文件。 如果打开文件成功,则返回一个指向 source. txt文件信息区 的起始地址的指针,并赋值给p,即印指向了文件 source. txt o 其后所有对该文件的操作都必须通过印指针来实现。 如果文件打开失败,则返回一个空指针NULL,赋值给po 说明: 文件名可以包含路径和文件名两部分。 ■写路径时,因为转义字符以反斜杠开头,所以“”才是表 示一个反斜杠。 ■【例】若路径和文件名为:“c: itelsource. txt”,则应写成 c:\tc\ Source.txt”。 ☆☆第9章文件操作
☆☆ 第9章 文件操作 10 举 例 FILE *fp; fp=fopen("source.txt","r"); 作用: 以读的方式(“r”模式即表示读“read”)打开当前目录下 文件名为source.txt的文件。 如果打开文件成功,则返回一个指向source.txt文件信息区 的起始地址的指针,并赋值给fp,即fp指向了文件source.txt。 其后所有对该文件的操作都必须通过fp指针来实现。 如果文件打开失败,则返回一个空指针NULL,赋值给fp。 说明: 文件名可以包含路径和文件名两部分。 写路径时,因为转义字符以反斜杠开头,所以“\\”才是表 示一个反斜杠。 【例】若路径和文件名为:“c:\tc\source.txt”,则应写成 “c:\\tc\\source.txt