为了协调cpu和io设备(键盘,显示器)速度不协调,提出IO缓冲区。
getchar()是一个阻塞函数
调用fputs的时候其实写入的是缓冲区,调用fclose的时候才真正写入到设备
如果我们希望数据不写入缓冲区,而是直接进入设备,则需要用到fflush立刻刷新缓冲区,立刻将缓冲区的数据存入目标位置
修改缓存模式的方法
使用函数setvbuf()
程序戛然而止并没有将所有的输出都打印出来,这是因为设置了setvbuf,按块缓冲,因为fflush的关系截胡了立刻刷新出了一行,直到输入了任意字符串才会刷新出后面的一行,要是setvbuf设置NBF(没有缓冲区),就会将所有数据刷新出来。
相关文章: