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;
}
展开
 我来答
_锋_芒_
2012-07-14 · 超过18用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:33.4万
展开全部
虽然有点看不懂这个代码是要干什么,不过总体来看 只有这里用到了outbuf
setbuf(stdout,outbuf);
后面的用的却全是stdout
由此可以推出这个代码outbuf可能只是用来对数据进行些处理,其他什么用处都没有

了解这些下面说的你应该就明白了,因为他用了setbuf就好像设置了一个门,而这个门只允许一次通过有限个人,比如说我有1000个人,但是只能一次通过3个人,拿我是不就要走334次才能全部走出门。这就是缓冲,因为如果一次进去1000个人门也许就被挤破了
追问
我看不出char outbuf[40]改为char outbuf[1]或char outbuf[4000],速度有何变化,有方法检测 fflush(stdout);的速度吗?
旷飞白002
2012-07-14 · TA获得超过613个赞
知道小有建树答主
回答量:370
采纳率:0%
帮助的人:250万
展开全部
setbuf设置缓冲区大小的,就算你设置成NULL,不缓冲也是可以的啊。

唯一的不同是puts输出不加\n的话如果你设置的缓冲区很大,要等到缓冲区满了才会输出到屏幕。

参考资料: http://baike.baidu.com/view/1966531.htm

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式