c语言从0开始_13缓冲区
输出缓冲区:
程序要输出的数据并不能立即显示到屏幕上,而是先存储在输出缓冲区中,当满足一定条件时才能够显示显示出来。
1、遇到\n后
2、遇到输入语句后
3、当缓冲区满4k时
4、当程序结束时
5、fflush(stdout) 手动刷新
注意:缓冲区机制可以提高数据的速写速度
输入缓冲区:
程序并不会立即获取屏幕上输入的数据,而是按下回车键后程序才从输入缓冲区中读取数据
1、当读取整型、浮点型数据,而缓冲区中是字符型数据时,此时会读取失败,并且数据依然会残留在缓冲区中,会影响接下来的所有的数据读取。
2、fgets可以指定读取size个字节,如果有多余的数据会残留在输入缓冲区中
3、当先输入整型、浮点型数据,紧接着输入字符数据时
解决方法:scanf(" %c",&ch) (%前跟个空格)
把输入缓冲区的当前位置指针移动到了缓冲区的末尾,相当于清空输入缓冲区,只能在GNU编译环境下使用
void clean_stdin(void)
{
stdin->_IO_read_ptr = stdin->_IO_read_end;
}