
第9章文件 文件的概念 文件的操作 文件检测函数
1 2 3 第9章 文件 文件的概念 文件的操作 文件检测函数

任务一文件的概念 文件概念和类型 在程序运行时,常常需要将一些数据(运行的最终结 果或中间数据)输出到磁盘上存放起来,以后需要时 再从磁盘中输入到计算机内存,这就要用到磁盘文件。 除磁盘文件外,操作系统把每一个与主机相联的输入 输出设备都看作是文件来管理。比如,键盘是输入文 件,显示屏和打印机是输出文件
任务一 文件的概念 “计算机程序”是让计算机完成某项特定任务,而编制的一组指示计算机工作 的指令。计算机就像一个优秀的士兵,他无条件服从长官(程序编写者)的命 令,为了完成一项军事任务,长官下达的一系列命令就是“程序”。 在程序运行时,常常需要将一些数据(运行的最终结 果或中间数据)输出到磁盘上存放起来,以后需要时 再从磁盘中输入到计算机内存,这就要用到磁盘文件。 除磁盘文件外,操作系统把每一个与主机相联的输入 输出设备都看作是文件来管理。比如,键盘是输入文 件,显示屏和打印机是输出文件。 文件概念和类型

任务一文件的概念 文件概念和类型 文件在C语言中被看成是由字符(字节)的数据顺序组成的一种序列,并将 它们按数据的组织方式分为二进制文件和ASc码文件二种。二进制文件,即 是把数据按内存的存储方式直接存放在磁盘上的一种形式。 ASC文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节, 用于存放对应的ASCI码。 ASCI码文件可在屏幕上按字符显示,例如源程序文件就是ASCI文件。由于是 按字符显示,因此能读懂文件内容
任务一 文件的概念 “计算机程序”是让计算机完成某项特定任务,而编制的一组指示计算机工作 的指令。计算机就像一个优秀的士兵,他无条件服从长官(程序编写者)的命 令,为了完成一项军事任务,长官下达的一系列命令就是“程序”。 文件在 C 语言中被看成是由字符(字节)的数据顺序组成的一种序列,并将 它们按数据的组织方式分为二进制文件和 ASCII 码文件二种。二进制文件,即 是把数据按内存的存储方式直接存放在磁盘上的一种形式。 ASCII 文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节, 用于存放对应的 ASCII 码。 ASCII 码文件可在屏幕上按字符显示,例如源程序文件就是 ASCII 文件。由于是 按字符显示,因此能读懂文件内容。 文件概念和类型

任务一文件的概念 文件概念和类型 二进制文件是按二进制的编码方式来存放文件的。例如,数5678的存储形 式为: 0001011000101110只占二个字节。二进制文件虽然也可在屏幕上显示,但 其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符 流,按字节进行处理。输入输出字符流的开始和结束只由程序控制而不受物 理符号如回车符)的控制。因此也把这种文件称作"流式文件
任务一 文件的概念 “计算机程序”是让计算机完成某项特定任务,而编制的一组指示计算机工作的指令。计算机就像一个优 秀的士兵,他无条件服从长官(程序编写者)的命令,为了完成一项军事任务,长官下达的一系列命令就 是“程序”。 二进制文件是按二进制的编码方式来存放文件的。 例如, 数 5678 的存储形 式为: 00010110 00101110 只占二个字节。二进制文件虽然也可在屏幕上显示, 但 其内容无法读懂。C 系统在处理这些文件时,并不区分类型,都看成是字符 流,按字节进行处理。输入输出字符流的开始和结束只由程序控制而不受物 理符号(如回车符)的控制。 因此也把这种文件称作“流式文件”。 文件概念和类型

任务一文件的概念 文件指针 每个被使用的文件都在内存中开辟一个区域,用来存 放文件的有关信息,这些信息是保存在一个结构体类 型的变量中的,该结构体类型是由系统定义的,取名 为FILE。对FILE这个结构体类型的定义是在stdio.h头 文件中由系统完成的,只要程序用到一个文件,系统 就为此文件开辟一个如上的结构体变量
任务一 文件的概念 “计算机程序”是让计算机完成某项特定任务,而编制的一组指示计算机工作 的指令。计算机就像一个优秀的士兵,他无条件服从长官(程序编写者)的命 令,为了完成一项军事任务,长官下达的一系列命令就是“程序”。 每个被使用的文件都在内存中开辟一个区域,用来存 放文件的有关信息,这些信息是保存在一个结构体类 型的变量中的,该结构体类型是由系统定义的,取名 为 FILE。对 FILE 这个结构体类型的定义是在stdio.h 头 文件中由系统完成的,只要程序用到一个文件,系统 就为此文件开辟一个如上的结构体变量。 文件指针

任务一文件的概念 文件指针 有几个文件就开辟几个这样的结构体变量,分别用来存放各个 文件的有关信息。这些结构体变量不用变量名来标识,而通过 指向结构体类型的指针变量去访问,这就是"文件指针”。 例:FILE*fp; 其中fp是指向FLE结构的指针变量,把f称为指向一个文件的 指针
任务一 文件的概念 “计算机程序”是让计算机完成某项特定任务,而编制的一组指示计算机工作 的指令。计算机就像一个优秀的士兵,他无条件服从长官(程序编写者)的命 令,为了完成一项军事任务,长官下达的一系列命令就是“程序”。 有几个文件就开辟几个这样的结构体变量,分别用来存放各个 文件的有关信息。这些结构体变量不用变量名来标识,而通过 指向结构体类型的指针变量去访问,这就是“文件指针”。 例:FILE *fp; 其中fp是指向 FILE 结构的指针变量,把fp称为指向一个文件的 指针。 文件指针

任务二文件的操作 文件的打开与关闭 1.文件的打开 标准输入输出函数库提供fopen函数完成文件打开操 作,fopen函数的用法如下: FILE *fp; fp=fopen(文件名,文件操作方式);
任务二 文件的操作 “计算机程序”是让计算机完成某项特定任务,而编制的一组指示计算机工作 的指令。计算机就像一个优秀的士兵,他无条件服从长官(程序编写者)的命 令,为了完成一项军事任务,长官下达的一系列命令就是“程序”。 1.文件的打开 标准输入输出函数库提供 fopen 函数完成文件打开操 作,fopen 函数的用法如下: FILE *fp; fp=fopen(文件名,文件操作方式); 文件的打开与关闭

任务二文件的操作 文件操作方式 文件操作方式 含义 指定文件不存在时 指定文件存在时 “r”只读 打开一个文本文件只读 出错 正常打开 “w”只写 生成一个文本文件只写 建立新文件 原文件内容丢失 “a”追加 对一个文本文件添加 建立新文件 原文件尾部追加数据 “rb” 打开一个二进制文件只读 出错 正常打开 “wb” 生成一个二进制文件只写 建立新文件 原文件内容丢失 “ab” 对一个二进制文件添加 建立新文件 原文件尾部追加数据 “r+” 打开一个文本文件读/写 出错 正常打开 “w+” 生成一个文本文件读/写 建立新文件 原文件内容丢失 “a+” 打开或生成一个文本文件读/写 建立新文件 原文件尾部追加数据 “rb+” 打开一个二进制文件读/写 出错 正常打开 “wb+” 生成一个二进制文件读/写 建立新文件 原文件内容丢失 “abt” 打开或生成一个二进制文件读/ 建立新文件 原文件尾部追加数据
任务二 文件的操作 文件操作方式 文件操作方式 含义 指定文件不存在时 指定文件存在时 “r”只读 打开一个文本文件只读 出错 正常打开 “w”只写 生成一个文本文件只写 建立新文件 原文件内容丢失 “a”追加 对一个文本文件添加 建立新文件 原文件尾部追加数据 “rb” 打开一个二进制文件只读 出错 正常打开 “wb” 生成一个二进制文件只写 建立新文件 原文件内容丢失 “ab” 对一个二进制文件添加 建立新文件 原文件尾部追加数据 “r+” 打开一个文本文件读/写 出错 正常打开 “w+” 生成一个文本文件读/写 建立新文件 原文件内容丢失 “a+” 打开或生成一个文本文件读/写 建立新文件 原文件尾部追加数据 “rb+” 打开一个二进制文件读/写 出错 正常打开 “wb+” 生成一个二进制文件读/写 建立新文件 原文件内容丢失 “ab+” 打开或生成一个二进制文件读/ 写 建立新文件 原文件尾部追加数据

任务二文件的操作 说明: (1)如果不能实现“打开”任务,fopen函数将会带回一个出错信息。出错 的原因可能是用””方式打开一个并不存在的文件;磁盘出故障;磁盘已 满无法建立新文件等。此时fopen函数将带回一个空指针值NULL。 (2)在向计算机输入文本文件时,将回车换行符转换为一个换行符,在输出 时把换行符转换成为回车和换行两个字符。在用二进制文件时,不进行这 种转换,在内存中的数据形式与输出到外部文件中的数据形式完全一致, 一一对应
任务二 文件的操作 “计算机程序”是让计算机完成某项特定任务,而编制的一组指示计算机工作 的指令。计算机就像一个优秀的士兵,他无条件服从长官(程序编写者)的命 令,为了完成一项军事任务,长官下达的一系列命令就是“程序”。 说明: (1) 如果不能实现“打开”任务,fopen 函数将会带回一个出错信息。出错 的原因可能是用“r”方式打开一个并不存在的文件;磁盘出故障;磁盘已 满无法建立新文件等。此时 fopen 函数将带回一个空指针值 NULL。 (2) 在向计算机输入文本文件时,将回车换行符转换为一个换行符,在输出 时把换行符转换成为回车和换行两个字符。在用二进制文件时,不进行这 种转换,在内存中的数据形式与输出到外部文件中的数据形式完全一致, 一一对应

任务二文件的操作 【案例9-1】如果想打开一个名为texe.txt文件并准备写操作。 可以用语句: fp=fopen "text.txt","w"); 下面的用法比较常见。 if(fp=fopen("text”,"w”)=NULL) { printf("不能打开此文件\n”; exit(1); } 这种用法可以在写文件之前先检验已打开的文件是否成功:
任务二 文件的操作 “计算机程序”是让计算机完成某项特定任务,而编制的一组指示计算机工作 的指令。计算机就像一个优秀的士兵,他无条件服从长官(程序编写者)的命 令,为了完成一项军事任务,长官下达的一系列命令就是“程序”。 【案例9-1】如果想打开一个名为texe.txt文件并准备写操作。 可以用语句: fp= fopen ( “text.txt ”,“w ”); 下面的用法比较常见。 if((fp=fopen(“text” , “ w ”))==NULL) { printf(“不能打开此文件 \ n ”); exit (1); } 这种用法可以在写文件之前先检验已打开的文件是否成功