1.scanf缓存区
1.scanf为键盘缓存区,scnaf,getchar 只要缓存区有东西,就不用用户输入,直接从缓存区读取数据;
2.scanf 是按照格式控制符去查找数据的,所以%d不会读取到缓存区的换行符 但是%s也不读取换行符。
scanf 和 getchar 都是用户输入信息,按换行符表示结束,所以注意缓存区就有该换行符。一般为了后续不必要的麻烦,每次输入完,都把换行符读取掉。
3.scanf有两个步骤,一:从缓存区读取; 二: 把读取的东西赋给变量;
scnaf遇到 ‘空格’ ‘换行’ 结束,此时是结束了读取;因为scanf是行缓存,所以要按换行符把缓存区的数据刷新出来,因为不刷新出来的话,就没有值给变量,虽然输入停止了,但是赋值给变量没有操作,所以后续的程序就不会执行,严格的来说,换行符是scanf的结束。
2.printf缓存区
1.printf为标准输出缓存区,多个printf共用一个缓存区,顺序存储的,只要一个有刷新,就会全部刷新出来。
2.printf显示分为两种情况,一:遇到换行符;二:缓存区满了;
注: 标准输入输出都是行缓存,报错信息是零缓存;