69,381
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<windows.h>
char buff[10];
int main()
{
int c;
setvbuf(stdout, buff, _IOFBF, 10);
while(putchar(getchar())!='\n');
printf("done!");
Sleep(2000);
fflush(stdout);
return 0;
}
老哥,我觉得你没明白我的意思啊。我试的是stdin啊,如果无缓冲的话,那个getchar接收时,应该输入一个字符后就自动接收了,但是仍然是等到按了回车后才开始读取的。满缓冲也是,我输入的内容已经超过缓冲区很多了,仍然没有开始读取,而是等我按了回车后才开始读取的。我不明白你说的滞留区是什么意思,只是实际测试是如此,如果输入太多缓冲区不够装的话,他就会来回装填直到装完缓冲区。其实,我说一个我个人的看法不知道你觉得如何,我认为这个缓冲区是只属于我们这个程序的缓冲区,系统对于键盘输入有自己的缓冲区,那么我们的缓冲区只是在按了回车后从那个缓冲区复制过来的数据而已。[/quote]#include<stdio.h>
#include<windows.h>
char buff[10];
int main()
{
fprintf(stdout, "启用满缓冲\n");
setvbuf(stdout, buff, _IOFBF, 10);
fprintf(stdout, "abcdefghijklmnopqrst\n\n...done");
Sleep(2000);
return(0);
}