计算机中的流
大多数应用程序都需要实现与设备之间的数据传输,例如,键盘可以输入数据、显示器可以显示程序的运行结果等,C语言将这种通过不同输入/输出设备(键盘、内存、显示器、网络等)之间的数据传输抽象表述为“流”。流实际上就是一个字节序列,输入程序的字节序列被称为输入流,从程序输出的字节序列被称为输出流。为了方便读者更好的理解流的概念,可以把输入流和输出流比作两根“水管”,如图1所示。
图1 输入流和输出流
在图1中,输入流被看成一个输入管道,输出流被看成一个输出管道,数据通过输入流从源设备输入到程序,通过输出流从程序输出到目标设备,从而实现数据的传输。C语言中的流有以下两种。
1、文本流和二进制流
输入输出流还可以进一步细分为文本流(字符流)和二进制流。它们之间的主要差异是,在文本流中输入输出的数据是一系列的字符,可以被修改。在二进制流中输入输出的数据是一系列字节,不能以任何方式修改。
2、预定义的流
C语言中有三个系统预定义的流,分别为标准输入流(stdin,全称standard input)、标准输出流(stdout,全称standard output)和标准错误输出流(stderr,全称standard error)。这三个标准流分别对应键盘上的输入、控制台上的正常输出和控制台上的错误输出。它们都是在stdio.h头文件中预定义的,程序只要包含这个头文件,在程序开始执行时,这些流将自动被打开,程序结束后,自动关闭,不需要做任何初始化准备。