char outbuf[40]表示什么意思?
我将以下程序中charoutbuf[40]改为charoutbuf[1],在VC6.0中照样全部输出。#include<stdio.h>#include<dos.h>#i...
我将以下程序中char outbuf[40]改为char outbuf[1],在VC6.0中照样全部输出。
#include <stdio.h>
#include <dos.h>
#include <conio.h>
char outbuf[1];
int main(void)
{
setbuf(stdout,outbuf);
puts("This is a test of buffered output.\n");
puts("This output will go into outbuf.\n");
puts("fill up or we flush the stream.\n");
puts("ye add these message.\n");
puts("ye add these message.\n");
puts("ye add any message.\n");
puts("ye add any message.\n");
puts("ye add any message.\n");
puts("fill up or we flush the stream.\n");
puts("fill up or we flush the stream.\n");
puts("fill up or we flush the stream.\n");
fflush(stdout);
getchar();
fflush(stdout);
getchar();
return 0;
} 展开
#include <stdio.h>
#include <dos.h>
#include <conio.h>
char outbuf[1];
int main(void)
{
setbuf(stdout,outbuf);
puts("This is a test of buffered output.\n");
puts("This output will go into outbuf.\n");
puts("fill up or we flush the stream.\n");
puts("ye add these message.\n");
puts("ye add these message.\n");
puts("ye add any message.\n");
puts("ye add any message.\n");
puts("ye add any message.\n");
puts("fill up or we flush the stream.\n");
puts("fill up or we flush the stream.\n");
puts("fill up or we flush the stream.\n");
fflush(stdout);
getchar();
fflush(stdout);
getchar();
return 0;
} 展开
2个回答
展开全部
虽然有点看不懂这个代码是要干什么,不过总体来看 只有这里用到了outbuf
setbuf(stdout,outbuf);
后面的用的却全是stdout
由此可以推出这个代码outbuf可能只是用来对数据进行些处理,其他什么用处都没有
了解这些下面说的你应该就明白了,因为他用了setbuf就好像设置了一个门,而这个门只允许一次通过有限个人,比如说我有1000个人,但是只能一次通过3个人,拿我是不就要走334次才能全部走出门。这就是缓冲,因为如果一次进去1000个人门也许就被挤破了
setbuf(stdout,outbuf);
后面的用的却全是stdout
由此可以推出这个代码outbuf可能只是用来对数据进行些处理,其他什么用处都没有
了解这些下面说的你应该就明白了,因为他用了setbuf就好像设置了一个门,而这个门只允许一次通过有限个人,比如说我有1000个人,但是只能一次通过3个人,拿我是不就要走334次才能全部走出门。这就是缓冲,因为如果一次进去1000个人门也许就被挤破了
追问
我看不出char outbuf[40]改为char outbuf[1]或char outbuf[4000],速度有何变化,有方法检测 fflush(stdout);的速度吗?
展开全部
setbuf设置缓冲区大小的,就算你设置成NULL,不缓冲也是可以的啊。
唯一的不同是puts输出不加\n的话如果你设置的缓冲区很大,要等到缓冲区满了才会输出到屏幕。
唯一的不同是puts输出不加\n的话如果你设置的缓冲区很大,要等到缓冲区满了才会输出到屏幕。
参考资料: http://baike.baidu.com/view/1966531.htm
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询