低级ⅣO函数是面向系统的,可将它们看作为程 序和操作系统之间的一种低层次的接口。它们是由 操作系统提供的基本1O服务。 这类函数对系统的依赖性很强,不同系统中提 供的这类函数的种类、个数、调用形式、甚至于处 理能力都可能不同,移植性要求较高的程序中应尽 量避免使用它们。 使用这类函数存取文件需要知道较多的文件内 部处理细节,因此将这类函数称之为非缓冲IO函数 ( unbuffered/O,C99标准不再支持这类函数
11 低级I/O函数是面向系统的,可将它们看作为程 序和操作系统之间的一种低层次的接口。它们是由 操作系统提供的基本I/O服务。 这类函数对系统的依赖性很强,不同系统中提 供的这类函数的种类、个数、调用形式、甚至于处 理能力都可能不同,移植性要求较高的程序中应尽 量避免使用它们。 使用这类函数存取文件需要知道较多的文件内 部处理细节,因此将这类函数称之为非缓冲I/O函数 (unbuffered I/O), C99标准不再支持这类函数
5、利用高级ⅣO库函数存取文件 c中利用高级ⅣO函数读写文件的过程与其他 语言中读写文件的过程是类似的,通常按如下的顺 序进行: 打开文件 读/写文件 若千次 关闭文件 12
12 5、利用高级I/O库函数存取文件 C中利用高级I/O函数读写文件的过程与其他 语言中读写文件的过程是类似的,通常按如下的顺 序进行: ┋ 打开文件 ┋ 读/写文件 ┋ 关闭文件 ┋ 若干次
这个操作顺序表明:一个文件能被读写之前首 先要打开它,只有文件被打开后才能进行读/写, 文件读/写完后要关闭这个文件。 向题是使用文件之前为什么要打开文件?打开与 关闭文件的目的和任务是什么?如何进行文件的 打开、读/写和关闭操作? 下面的几节将详细讨论这些问题。 13
13 问题是使用文件之前为什么要打开文件?打开与 关闭文件的目的和任务是什么? 如何进行文件的 打开、读/写和关闭操作? 下面的几节将详细讨论这些问题。 这个操作顺序表明:一个文件能被读写之前首 先要打开它,只有文件被打开后才能进行读/写, 文件读/写完后要关闭这个文件
132文件打开 (1)打开文件与文件类型指针 系统中使用的文件名是文件的外部名,通过它 可以找到文件的实际存储设备、位置、大小、属性 等相关信息。这些信息由操作系统的文件管理系统 掌握与管理。 这意味着C程序没有直接通过文件的外部名存 取一个外部文件的能力。因此,要存取文件必须通 过操作系统的文件系统
14 13.2 文件打开 (1) 打开文件与文件类型指针 系统中使用的文件名是文件的外部名,通过它 可以找到文件的实际存储设备、位置、大小、属性 等相关信息。这些信息由操作系统的文件管理系统 掌握与管理。 这意味着C程序没有直接通过文件的外部名存 取一个外部文件的能力。因此,要存取文件必须通 过操作系统的文件系统
程序中要读/写文件必须与操作系统的文件系 统取得联系 这种联系包括把欲存取文件的有关信息和要求 如文件的名字、读文件还是写文件、以何种方式存 取等信息告诉操作系统,由操作系统的文件系统在 设备中建立、寻找、定位、分配存取文件的缓冲区, 做好存取文件的一切准备工作。 上述存取文件的有关信息和要求都由程序中通 过调用O库函数 fopen告诉操作系统。 15
15 程序中要读/写文件必须与操作系统的文件系 统取得联系! 这种联系包括把欲存取文件的有关信息和要求, 如文件的名字、读文件还是写文件、以何种方式存 取等信息告诉操作系统,由操作系统的文件系统在 设备中建立、寻找、定位、分配存取文件的缓冲区, 做好存取文件的一切准备工作。 上述存取文件的有关信息和要求都由程序中通 过调用I/O库函数 fopen 告诉操作系统