2、C文件系统 为给程序提供与设备无关的、统一的、方便的文 件ⅣO处理界面,C语言把计算机系统中的各种设备 都抽象成文件,如把键盘抽象成输入文件、把显示 器抽象成输出文件等。 设备都抽象成文件之后,程序便只与文件打交 道,而不必关心具体的设备。因此,程序中使用的 文件其实都是使用某种设备,C文件系统中的ⅣO函 数都是针对文件而言的
6 2、 C文件系统 为给程序提供与设备无关的、统一的、方便的文 件I/O处理界面,C语言把计算机系统中的各种设备 都抽象成文件,如把键盘抽象成输入文件、把显示 器抽象成输出文件等。 设备都抽象成文件之后,程序便只与文件打交 道,而不必关心具体的设备。因此,程序中使用的 文件其实都是使用某种设备,C文件系统中的I/O函 数都是针对文件而言的
3、ⅣO流概念( 7O stream) C语言把每一个文件都看成一个连续的、有序 的谓之“流”的字节序列,流中的每一个字节都可以 单独存取。每个文件都以一个特别的结束标志end of file marker简记为EOF)结束。 C文件系统支持兩种流: 文本流( (text stream) 二进制流( binary stream)
7 C 语言把每一个文件都看成一个连续的、有序 的谓之“流” 的字节序列, 流中的每一个字节都可以 单独存取。每个文件都以一个特别的结束标志(end of file marker 简记为EOF)结束。 C 文件系统支持两种流: 文本流 (text stream) 二进制流 (binary stream) 3、 I/O流概念 (I/O stream)
文本流 一种以行为单位组织的字符序列,行以特定字 符结束。不同系统的行结束符可能不同。 Windows、DOS环境中:rn(回车与换行组合) 其他系统环境中:r(单个回车符) C语言环境中:m(单个换行符) 因此,在C中读写文件时,C将根据所在环境进 行行结束符的转换,读取时将Ⅷrn或转换成n; 写入时将Ⅶ转换成rn或r
8 因此, 在C中读写文件时, C将根据所在环境进 行行结束符的转换,读取时将 \r\n 或 \r转换成 \n ; 写入时将 \n 转换成 \r\n 或 \r 。 文本流 Windows、DOS环境中:\r\n 其他系统环境中:\r (回车与换行组合) C语言环境中:\n 一种以行为单位组织的字符序列,行以特定字 符结束。不同系统的行结束符可能不同。 (单个回车符) (单个换行符)
二进制流 没有行概念的一种字节序列(注意区分“字 符”与“字节”的不同含义 C程序能够读/写流中的每一个字节(读写文 件的字节数与实际存储的字节数相等),不存在 任何字符变换。 一个文本文件也可以按二进制流方式处理。反 之,一个二进制文件也可以按文本流处理,但处 理效果极差。 通常文本文件用文本流处理,二进制文件用二 进制流处理
9 没有行概念的一种字节序列(注意区分“字 符”与“字节”的不同含义),。 C程序能够读/写流中的每一个字节(读写文 件的字节数与实际存储的字节数相等),不存在 任何字符变换。 一个文本文件也可以按二进制流方式处理。反 之,一个二进制文件也可以按文本流处理,但处 理效果极差。 通常文本文件用文本流处理,二进制文件用二 进制流处理。 二进制流
4、C语言ⅣO函数 C语言文件系统由若干O函数组成,可把ⅣO函 数分为三类: 第一类为标准设备ⅣO函数 (standard 1o 这是针对键盘和显示器的ⅣO函数 第二类为标准高级ⅣO函数( ( standard high-level 1O) 这类函数是针对磁盘文件或其他设备文件的, 它们面向用户或程序,可把这类函数看作为程序和 操作系统之间的一种ⅣO高级接 Gel vo 使用这类函数不必关心文件的处理细节,通常 将这类函数称为缓冲O函数( buffered vo)
10 第三类为低级I/O函数 第一类为标准设备I/O函数(standard I/O) C 语言文件系统由若干I/O函数组成,可把 I/O函 数分为三类: 第二类为标准高级I/O函数(standard high-level I/O) 4、 C 语言I/O函数 这是针对键盘和显示器的I/O函数 这类函数是针对磁盘文件或其他设备文件的 , 它们面向用户或程序, 可把这类函数看作为程序和 操作系统之间的一种I/O高级接口。 使用这类函数不必关心文件的处理细节, 通常 将这类函数称为缓冲I/O函数 (buffered I/O ) 。 (low-level I/O)