输出缓冲区:
程序并不会立即把输出的数据显示到屏幕上,而是先存储在输出缓冲区中,当满足一定条件时
才显示出来
1、遇到\n (缓冲区内容也会刷新到屏幕上)
2、程序结束时
3、遇到输入语句时
4、当缓冲区满4K时
5、fflush(stdout) 手动刷新(Linux系统有用)
输入缓冲区:
程序并不会立即获取屏幕上输入的数据,而是按下回车键后程序才从输入缓冲区读取数据
缓冲区机制:
1、可以提高数据的读写速度
2、可以让低速的输入输出设备与高速的CPU之间协调工作
缓冲区常见问题:
1、当需要读取的是整型或者浮点型时,而输入缓冲区中的数据是字符或符号时,
此时读取会失败,数据会残留在输入缓冲区中,就会影响接下来的所有数据的读取
解决方法: 借助scanf返回值判断是否接收成功,如果接收过程有失败情况,
可以先清理输入缓冲区,再重新循环直到接收成功为止
int a = 0,b = 0,c = 0;
while(3 > scanf("%d%d%d",&a,&b,&c))
{
printf("输入数据有误,请重新输入:");
stdin->_IO_read_ptr = stdin->_IO_read_end;
}
printf("