特点
- 标准IO通过缓存机制减少系统调用,实现更高的效率。
- 由ANCⅡ C库定义
- 是在文件I/O的基础上添加了一个缓存机制
流(stream)
- Windows:分为二进制流(换行符<=>‘\n’),文本流(换行符<=>’\r’,‘\n’)
- Linux:不区分二进制流和文本流(换行符<=>‘\n’)
- 由FILE结构体存放打开文件的相关信息:
struct _iobuf
{
char *_ptr;// _ptr 字符指针表示文件输入的下一个位置
int _cnt; // cnt 表示当前缓冲区的相对位置
char *_base;// _base 字符指针表示文件的起始位置
int _flag; // _flag 表示文件标志
int _file;// _file 表示文件的有效性验证
int _charbuf;// _charbuf 表示缓冲区的检查,若无此成员则不读取
int _bufsize; // _bufsize 表示文件大小
char *_tmpfname; // _tmpfnam 临时文件名
};
typedef struct _iobuf FILE;
流的缓冲类型
- 全缓冲:当缓冲区无数据或者无空间时才执行的实际I/O操作
- 行缓冲:当输入输出中遇到换行符经行的I/O操作;当流和一个终端相连时,经行行缓冲
- 无缓冲:数据直接写入文件,不进行缓冲(错误流)
基本流
- 标准输出流:stdin
- 标准输入流:stdout
- 标准错误流:stderr