一心只想AC 2023-07-21 00:56 采纳率: 74.6%
浏览 29
已结题

请问缓冲区是什么啊?

从键盘输入的内存存在缓冲区,也会是内存的一块区域。如果编程时关闭了缓冲区,键盘输入的内容去哪了啊?

int n;
int x=0;
while(1){
x = scanf("%d",&n);//输入1 2 3 4 5
printf("%d ",x);
}

上面代码的输出为1 1 1 1 1
而当我输入一个字母a时,因为scanf读取不到字符a,a就一直在缓存区里,一直循环被读,但返回值都是0,所以会无限输出0.
但当在scanf前关闭缓存区,输入a就只有一个0,输入1 2 3 4 5就输出1 1 1 1 1.
但当在printf和scanf直接关闭缓存区的话,不管输入多少数字,第一个输出的数都只有一个数,例如输入1 2 3,输出1。但之后的输出就正常了,输入1 2 3得到1 1 1.
我想知道缓存区关闭后,从键盘输入的数字存在了哪里?输入1 2 3 4 5还能输出1 1 1 1 1。scanf一次只读一个,但是输出了5个1,也就是说2 3 4 5都没有被扔到,但是缓存区已经关闭了,想知道这些数字存放在哪里了。
谢谢!

  • 写回答

2条回答 默认 最新

  • 关注

    简明地说,缓冲区就是你输入后可以在控制台上显示,但是程序并没有真正读取到你的输入,只有换行才能。关闭缓冲区后你的输入直接被程序读取了。注:关闭缓冲区可以用fflush(stdout);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月29日
  • 已采纳回答 7月21日
  • 创建了问题 7月21日