C 语言程序设计精品课 《C语言程序设计》 课程讲义 荆程 第十三章文件 2006年4月 技术系
第十三章 文件 《C语言程序设计》 课程讲义 2006年4月
C 上一章节课程回顾 语言程序设计ˇ精品 掌握位运算符的使用 了解整数在内存中的存放形式 课掌握位运算的应用 荆程 负数的补码 技术系
上一章节课程回顾 掌握位运算符的使用 了解整数在内存中的存放形式 掌握位运算的应用 负数的补码 结束 首页 上页 下页 末页 节
[第12章文件 在程序运行时,程序本身和数据一般都存放在内存中 程序设计精品课 当程序运行结束后,存放在内存中的数据被释放 如果需要长期保存程序运行所需的原始数据,或程序运 行产生的结果,就必须以文件形式存储到外部存储介质上 12.1C语言文件概述 荆程 12.2文件的打开与关闭 123文件的读写操作 124位置指针与文件定位 12.5出错检测 技术系
第12章 文 件 在程序运行时,程序本身和数据一般都存放在内存中。 当程序运行结束后,存放在内存中的数据被释放。 如果需要长期保存程序运行所需的原始数据,或程序运 行产生的结果,就必须以文件形式存储到外部存储介质上。 12.1 C语言文件概述 12.2 文件的打开与关闭 12.3 文件的读写操作 12.4 位置指针与文件定位 12.5 出错检测
C 语12.1c语言文件概述 1.文件与文件名 程序设计精品课 文件是指存放在外部存储介质上的数据集合。 为标识一个文件,每个文件都必须有一个文件名, 其一般结构为:主文件名扩展名 文件命名规则,遵循操作系统的约定。 2.文件分类 荆程可以从不同的角度对文件进行分类 (1)根据文件的内容,可分为程序文件和数据文件, 程序文件又可分为源文件、目标文件和可执行文件 (2)根据文件的组织形式,可分为顺序存取文件和 随机存取文件。 技术系
12.1 C语言文件概述 1.文件与文件名 文件是指存放在外部存储介质上的数据集合。 为标识一个文件,每个文件都必须有一个文件名, 其一般结构为:主文件名[.扩展名] 文件命名规则,遵循操作系统的约定。 2.文件分类 可以从不同的角度对文件进行分类: (1)根据文件的内容,可分为程序文件和数据文件, 程序文件又可分为源文件、目标文件和可执行文件。 (2)根据文件的组织形式,可分为顺序存取文件和 随机存取文件
C 语 (3)根据文件的存储形式,可分为ASC码文件和二 程进制文件。 AsC码文件的每1个字节存储1个字符,因而便于对 设字符进行逐个处理。但一般占用存储空间较多,而且要花 计费转换时间(二进制与ASC码之间的转换)。 二进制文件是把内存中的数据,原样输出到磁盘文件 精 中。可以节省存储空间和转换时间,但1个字节并不对应1 个字符,不能直接输出字符形式 荆程 3.读文件与写文件 所谓读文件是指,将磁盘文件中的数据传送到计算机 菜内存的操作。 所谓写文件是指,从计算机内存向磁盘文件中传送数 据的操作。 技术系
(3)根据文件的存储形式,可分为ASCII码文件和二 进制文件。 ASCII码文件的每1个字节存储1个字符,因而便于对 字符进行逐个处理。但一般占用存储空间较多,而且要花 费转换时间(二进制与ASCII码之间的转换)。 二进制文件是把内存中的数据,原样输出到磁盘文件 中。可以节省存储空间和转换时间,但1个字节并不对应1 个字符,不能直接输出字符形式。 3.读文件与写文件 所谓读文件是指,将磁盘文件中的数据传送到计算机 内存的操作。 所谓写文件是指,从计算机内存向磁盘文件中传送数 据的操作
C 语言程序设计 4.构成文件的基本单元与流式文件 C语言将文件看作是由一个一个的字符(ASC码文 件)或字节(二进制文件)组成的。将这种文件称为流式 文件。 而在其它高级语言中,组成文件的基本单位是记录, 精对文件操作的基本单位也是记录 课 荆程 5.文件类型FLE 系统给每个打开的文件都在内存中开辟一个区域,用 存放文件的有关信息(如文件名、文件位置等)。这些 信息保存在一个结构类型变量中,该结构类型由系统定义 取名为FLE 注意:结构类型名“FILE”必须大写。 技术系
4.构成文件的基本单元与流式文件 C语言将文件看作是由一个一个的字符(ASCII码文 件)或字节(二进制文件)组成的。将这种文件称为流式 文件。 而在其它高级语言中,组成文件的基本单位是记录, 对文件操作的基本单位也是记录。 5.文件类型FILE 系统给每个打开的文件都在内存中开辟一个区域,用 于存放文件的有关信息(如文件名、文件位置等)。这些 信息保存在一个结构类型变量中,该结构类型由系统定义、 取名为FILE。 注意:结构类型名“FILE”必须大写
C 语言程序设计 6.ANS|c的缓冲文件系统 所谓缓冲文件系统是指,系统自动地在内存 设区为每个正在使用的文件开辟一个缓冲区 从内存向磁盘输出数据时,必须首先输出到 精缓冲区中。待缓冲区装满后,再一起输出到磁盘 课 文件中 荆程 从磁盘文件向内存读入数据时,则正好相反: 首先将一批数据读入到缓冲区中,再从缓冲区中 将数据逐个送到程序数据区 技术系
6.ANSI C的缓冲文件系统 所谓缓冲文件系统是指,系统自动地在内存 区为每个正在使用的文件开辟一个缓冲区。 从内存向磁盘输出数据时,必须首先输出到 缓冲区中。待缓冲区装满后,再一起输出到磁盘 文件中。 从磁盘文件向内存读入数据时,则正好相反: 首先将一批数据读入到缓冲区中,再从缓冲区中 将数据逐个送到程序数据区
C 语122文件的打开与关闭 对文件进行操作之前,必须先打开该文件;使用结 程序设计精品课 束后,应立即关闭,以免数据丢失 C语言规定了标准输入输出函数库,用 fopen函数 打开一个文件,用 fclose0函数关闭一个文件 1221文件的打开— - fopen(函数 荆程 1.用法:FLE*open("文件名","操作方式") 2.功能:返回一个指向指定文件的指针。 3.函数原型: stdio. h。 注:对文件操作的库函数,函数原型均在头文件 stdio. h中。后续函数不再赘述。 技术系
12.2 文件的打开与关闭 对文件进行操作之前,必须先打开该文件;使用结 束后,应立即关闭,以免数据丢失。 C语言规定了标准输入输出函数库,用fopen()函数 打开一个文件,用fclose()函数关闭一个文件。 12.2.1 文件的打开──fopen()函数 1.用法: FILE *fopen("文件名" , "操作方式"); 2.功能:返回一个指向指定文件的指针。 3.函数原型:stdio.h 。 注:对文件操作的库函数,函数原型均在头文件 stdio.h中。后续函数不再赘述
C (1)“文件名”是指要打开(或创建)的文件名 语言程序设计精品课 程如果使用字符数组(或字符指针),则不使用双引号 (2)“操作方式”如表12-1所示。 例如,FLE*p fp=fopen("data. 99",r") 3.说明 (1)如果不能实现打开指定文件的操作,则 fopen 荆程閃数返回一个空指针NULL(其值在头文件 stdio. h中被定 义为0)。 为增强程序的可靠性,常用下面的方法打开一个文件: f(fp= fopen("文件名",操作方式")==NULL) Printf("can not open this fileIn); exit(o); 技术系
(1)“文件名”是指要打开(或创建)的文件名。 如果使用字符数组(或字符指针),则不使用双引号。 (2)“操作方式”如表12-1所示。 例如,FILE *fp; fp=fopen("data.99" ,"r"); 3.说明 (1)如果不能实现打开指定文件的操作,则fopen() 函数返回一个空指针NULL (其值在头文件stdio.h中被定 义为0)。 为增强程序的可靠性,常用下面的方法打开一个文件: if((fp=fopen("文件名","操作方式"))==NULL) { printf("can not open this file\n"); exit(0); }
C 语 言●关于ex0函数 程1)用法: void exit程序状态值 设2)功能:关闭已打开的所有文件,结束程序运行, 计 返回操作系统,并将“程序状态值”返回给操作系统。 持时,表示程序出错退出。,表示程序正常退出:;非0值 当“程序状态值”为0时 课(2)“r(b)+"与“a(b)+”的区别:使用前者打 荆程开文件时,读写位置指针指向文件头;使用后者时,读 写指针指向文件尾 (3)使用文本文件向计算机系统输入数据时,系统 自动将回车换行符转换成一个换行符;在输出时,将换 行符转换成回车和换行两个字符 技术系
●关于exit()函数 1)用法:void exit([程序状态值]); 2)功能:关闭已打开的所有文件,结束程序运行, 返回操作系统,并将“程序状态值”返回给操作系统。 当“程序状态值”为0时,表示程序正常退出;非0值 时,表示程序出错退出。 (2)“r(b)+”与“a(b)+”的区别:使用前者打 开文件时,读写位置指针指向文件头;使用后者时,读 写指针指向文件尾。 (3)使用文本文件向计算机系统输入数据时,系统 自动将回车换行符转换成一个换行符;在输出时,将换 行符转换成回车和换行两个字符