目录
1.数据流
2.缓冲区
3.C文件的定义
4.C文件类型
5.C文件存取方式
6.C语言提供的标准文件
1. 数据流
1.1 什么是数据流?
①. 数据流(Data Stream) 指的是程序与数据的交互是以流的形式进行的,进行 C 语言文件的存取时,都会先进行 “ 打开文件 ” 操作,这个操作就是在打开数据流,而 “ 关闭文件 ” 操作就是关闭数据流。
②. 数据流(Data Stream) 是一组有序,有起点和终点的字节的数据序列。包括输入流和输出流。
2. 缓冲区
2.1 什么是缓冲区?
缓冲区(Buffer) 指在程序执行时,所提供的一块存储空间(在内存中),可用来暂时存放做准备执行的数据,它的设置是为了提高存取效率,因为内存的存取速度比磁盘驱动器快得多。
2.2 C语言的文件处理功能依据系统是否设置“缓冲区”分为两种:
一种是设置缓冲区,另一种是不设置缓冲区。
由于不设置缓冲区的文件处理方式,必须使用较低级别的 I/O 函数(包含在头文件 io.h 和 fcntl.h 中)来直接对磁盘存取,这种方式的存取速度慢,并且由于不是 C 的标准函数,跨平台操作时容易出问题。下面介绍第一种处理方式,即设置缓冲区的文件处理方式。
当使用标准 I/O 函数(包含头文件 stdio.h 中)时,系统会自动设置缓冲区,并通过数据流来读写文件。当进行文件读取时,不会直接对磁盘进行读取,而是先打开数据流,将磁盘上的文件信息拷贝到缓冲区内,然后程序再从缓冲区中读取所需数据,如下图所示:
3. C文件的定义
3.1 什么是C文件?
C 文件,是程序设计中的一个重要概念。所谓 “ 文件 ” 一般是指存储在外部介质上数据的集合。一批文件是以数据的形式存放在外部介质(如磁盘)上的。操作系统是以文件为单位对数据进行管理的,也就是说,如果想找存在外部介质上的数据,必须先按文件名找到指定的文件,然后再从该文件中读取数据。(注:C 文件定义来源于百度百科)
4. C文件类型
4.1 C 文件分为文本文件和二进制文件两种。
4.2 文本文件是以字符编码的方式进行保存的。二进制文件将内存中数据原封不动至文件中,适用于非字符为主的数据。
4.3 其实,除了文本文件之外,所有的数据都可以算是二进制文件。二进制文件的优点在于存取速度快,占用空间小,以及可随机存取数据。
5. C文件存取方式
5.1 C 文件存取方式包括顺序存取方式和随机存取方式两种。
5.2 顺序读取也就是从上往下,一笔一笔读取文件的内容。保存数据时,将数据附加在文件的末尾。这种存取方式常用于文本文件,而被存取的文件则称为顺序文件。
5.3 随机存取方式多半以二进制文件为主。它会以一个完整的单位来进行数据的读取和写入,通常以结构为单位。
6. C语言提供的标准文件
6.1 通常把显示器称为标准输出文件,printf 就是向这个文件输出数据;通常把键盘称为标准输入文件,scanf 就是从这个文件读取数据。
注:①. 我们不用去探讨硬件设备是如何被映射成文件的,我们只需要记住,在 C 语言中硬件设备可以看成文件,有些输入输出函数不需要你指明到底读写哪个文件,系统已经为它们设置了默认的文件。
②. 在默认情况下,stdout 是行缓冲的,它的输出会放在一个 buffer 里面,只有到换行的时候,才会输出到屏幕。而 stderr 是无缓冲的,会直接输出。