1.标准I/O
标准I/O是由ANSI C标准定义的。在现在主流的操作系统(像Windows、Linux等)中,大都实现了C库,可以直接调用C库中的标准I/O函数。标准I/O通过缓冲机制来减少系统的调用,实现了更高的效率。像51单片机,直接通过程序控制硬件,这样叫做裸机开发,这样的开发不能对硬件起到保护作用,恶意程序可以轻易对硬件资源进行破坏。因此为了对硬件资源起到保护作用,在应用程序和硬件资源之间便引入了操作系统。用户的应用程序不再允许直接操作硬件,若要对硬件资源进行访问,则需要调用操作系统为用户预留出来的接口,这样的方法叫做系统调用。当程序需要频繁的进行系统调用时,很明显会降低程序的运行效率。为了弥补这个缺陷,在标准I/O中引入了缓冲机制。当引入缓冲机制后,用户程序对文件的读写首先在缓冲区中进行,只有缓冲区为空/满时,才会对文件进行读/写操作。
1.1标准I/O的缓冲机制:
标准I/O的缓冲机制包括全缓冲、行缓冲和无缓冲。全缓冲是指只有在缓冲区满的时候,才会进行I/O操作,只有缓冲区满的时候,才会向文件中写入数据,只有当缓冲区空的时候,才会从文件中读数据到缓冲区。当用户创建一个I/O流的时候,默认使用的是全缓冲机制。行缓冲机制指的是用户对文件进行读写操作的时候,当遇到'\n'的时候,才会进行实际的I/O操作。行缓冲的典型应用是当流与一个终端相联的时候,从标准输入读取数据或打印数据到标准输出就是典型的行缓冲。无缓冲机制就是数据不经过缓冲区,数据直接写入文件,流不进行缓冲。无缓冲的典型应用就是输出错误信息。
1.2标准I/O预定义了三个流
标准I/O预定义了三个流,分别是标准输入流、标准输出流和标准错误流。