清华大学出版社 TSINGHUA UNIVERSITY PRESS 第13章文件 13.1 C文件概述 13.2 文件类型指针 13.3 文件的打开与关闭 13.4 文件的读写 13.5 文件的定位 13.6 出错的检测 13.7 文件输入输出小结 习题
第13章 文 件 13.1 C文件概述 13.2 文件类型指针 13.3 文件的打开与关闭 13.4 文件的读写 13.5 文件的定位 13.6 出错的检测 13.7 文件输入输出小结 习题
清华大学出版社 TSINGHUA UNIVERSITY PRESS 13.1C文件概述 文件(fle)是程序设计中一个重要的概念。所谓“文件” 一般指存储在外部介质上数据的集合。一批数据是以 文件的形式存放在外部介质(如磁盘)上的。操作系统 是以文件为单位对数据进行管理的,也就是说,如果 想找存在外部介质上的数据,必须先按文件名找到所 指定的文件,然后再从该文件中读取数据。要向外部 介质上存储数据也必须先建立一个文件(以文件名标 识),才能向它输出数据。 ·以前各章中所用到的输入和输出,都是以终端为对象 的,即从终端键盘输入数据,运行结果输出到终端上。 从操作系统的角度看,每一个与主机相联的输入输出 设备都看作是一个文件。例如,终端键盘是输入文件
13.1 C文件概述 • 文件(file)是程序设计中一个重要的概念。所谓“文件” 一般指存储在外部介质上数据的集合。一批数据是以 文件的形式存放在外部介质(如磁盘)上的。操作系统 是以文件为单位对数据进行管理的,也就是说,如果 想找存在外部介质上的数据,必须先按文件名找到所 指定的文件,然后再从该文件中读取数据。要向外部 介质上存储数据也必须先建立一个文件(以文件名标 识),才能向它输出数据。 • 以前各章中所用到的输入和输出,都是以终端为对象 的,即从终端键盘输入数据,运行结果输出到终端上。 从操作系统的角度看,每一个与主机相联的输入输出 设备都看作是一个文件。例如,终端键盘是输入文件
清华大学出版社 TSINGHUA UNIVERSITY PRESS 显示屏和打印机是输出文件。 在程序运行时,常常需要将一些数据(运行的最终结 果或中间数据)输出到磁盘上存放起来,以后需要时 再从磁盘中输入到计算机内存。这就要用到磁盘文 件。 C语言把文件看作是一个字符(字节)的序列,即由 一个一个字符(字节)的数据顺序组成。根据数据的 组织形式,可分为ASC文件和二进制文件。 ASC文件又称文本(text)文件,它的每一个字节放 一个ASCⅡ代码,代表一个字符。二进制文件是把 内存中的数据按其在内存中的存储形式原样输出到 磁盘上存放。如果有一个整数10000,在内存中占2 个字节,如果按ASCⅡ码形式输出,则占5个字节
显示屏和打印机是输出文件。 • 在程序运行时,常常需要将一些数据(运行的最终结 果或中间数据)输出到磁盘上存放起来,以后需要时 再从磁盘中输入到计算机内存。这就要用到磁盘文 件。 • C语言把文件看作是一个字符(字节)的序列,即由 一个一个字符(字节)的数据顺序组成。根据数据的 组织形式,可分为ASCII文件和二进制文件。 ASCII文件又称文本(text)文件,它的每一个字节放 一个ASCII代码,代表一个字符。二进制文件是把 内存中的数据按其在内存中的存储形式原样输出到 磁盘上存放。如果有一个整数10000,在内存中占2 个字节,如果按ASCII码形式输出,则占5个字节
清华大学出版社 TSINGHUA UNIVERSITY PRESS 而按二进制形式输出,在磁盘上只占2个字节,见 图13.1。用ASCⅢ码形式输出与字符一一对应, 个字节代表一个字符,一个字节代表一个字符, 因而便于对字符进行逐个处理,也便于输出字符。 但一般占存储空间较多,而且要花费转换时间(二 进制形式与ASCⅡ码间的转换)。用二进制形式输 出数值,可以节省外存空间和转换时间,但一个 字节并不对应一个字符,不能直接输出字符形式。 一般中间结果数据需要暂时保存在外存上以后又 需要输入到内存的,常用二进制文件保存
而按二进制形式输出,在磁盘上只占2个字节,见 图13.1。用ASCII码形式输出与字符一一对应,一 个字节代表一个字符,一个字节代表一个字符, 因而便于对字符进行逐个处理,也便于输出字符。 但一般占存储空间较多,而且要花费转换时间(二 进制形式与ASCII码间的转换)。用二进制形式输 出数值,可以节省外存空间和转换时间,但一个 字节并不对应一个字符,不能直接输出字符形式。 一般中间结果数据需要暂时保存在外存上以后又 需要输入到内存的,常用二进制文件保存
清华大学出版社 TSINGHUA UNIVERSITY PRESS 0011000100110000001100000011000000110000 内存中存 (0) 储形式 0010011100010000 二进制形式 0010011100010000 。图13.1 ·由前所述,一个C文件是一个字节流或二进制流。 它把数据看作是一连串的字符(字节),而不考虑记 录的界限。换句话说,C语言中文件并不是由记 录(record组成的(这是和PASCAL或其他高级语言 不同的)。在C语言中对文件的存取是以字符(字节) 为单位的。输入输出的数据流的开始和结束仅受 程序控制而不受物理符号(如回车换行符)控制
• • 图13.1 • 由前所述,一个C文件是一个字节流或二进制流。 它把数据看作是一连串的字符(字节),而不考虑记 录的界限。换句话说,C语言中文件并不是由记 录(record)组成的(这是和PASCAL或其他高级语言 不同的)。在C语言中对文件的存取是以字符(字节) 为单位的。输入输出的数据流的开始和结束仅受 程序控制而不受物理符号(如回车换行符)控制