1】I/O操作
就C程序而言,所有的I/O操作只是简单的地从程序移进或移出字节的事情。因此,毫不惊奇的是,这种字节流便被称为流
(stream);标准IO提供三种类型的缓存1>全缓存2>行缓存3>不带缓存。如:我们的终端就是典型的行缓存。绝大多数流是全缓存的,这意味着“读取”和“写入”实际上是从一块被称为缓冲区的内存区域来回复制数据。
如:
int main(void)
{
fprintf(stdout,"to stdout ");
fprintf(stderr,"to stderr ");
return 0;
}
结果:to stderr to stdout
原因:stdout流对应终端,终端默认的是行缓存;stderr 标准出错是不带缓存的。
int main(void)
{
fprintf(stdout,"to stdout/n");
fprintf(stderr,"to stderr ");
return 0;
}
结果:to stdout
to stderr
原因:多了一个换行符,刷新了数据流。
int main(void)
{
fprintf(stdout,"to stdout ");
fflush(stdout); //刷新数据流
fprintf(stderr,"to stderr ");
return 0;
}
结果:to stdout
to stderr
当然我们还可以通过setbuf()和setvbuf()更改缓存类型。