免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1738 | 回复: 7
打印 上一主题 下一主题

c自己设置缓冲区情况下输出问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-12-21 23:45 |只看该作者 |倒序浏览
程序如下:



#include <stdio.h>;

#include <errno.h>;

int main(){



    int  ch;



    static char buf[BUFSIZ];



    setbuf(stdout,buf);



    printf("errno message:%s",strerror(errno));



    while((ch=getchar()) != EOF){



        putchar(ch);



    }



    return 0 ;



}



上述程序可以执行,但是却不能像想象的那样输出,就是在屏幕上敲入一行字符,回车后,不能马上回显。



我把errno值打印出来,也是正确的。



为什么呢?即使把BUFSIZ改为1都不行。只能在程序结束后,一次回显多行。

论坛徽章:
0
2 [报告]
发表于 2004-12-22 10:09 |只看该作者

c自己设置缓冲区情况下输出问题


  1. ....
  2. while((ch=getchar()) != EOF){
  3. putchar(ch);
  4. fflush(stdout);//加上这行就ok了
  5. }
  6. ...
复制代码

论坛徽章:
0
3 [报告]
发表于 2004-12-23 00:50 |只看该作者

c自己设置缓冲区情况下输出问题

不用fflush() 为什么就不行呢?如果缓冲区大小设置为1了.那么应该输入一个字符缓冲区就满了呀,那就应该输出了,可是为什么不输出呢?

论坛徽章:
0
4 [报告]
发表于 2004-12-23 07:55 |只看该作者

c自己设置缓冲区情况下输出问题

setbuf 不能改缓冲区大小。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2004-12-23 09:24 |只看该作者

c自己设置缓冲区情况下输出问题

改变缓冲区大小可以使用setbuffer()。man setbuffer

论坛徽章:
0
6 [报告]
发表于 2004-12-23 09:31 |只看该作者

c自己设置缓冲区情况下输出问题

建议你查看一下《UNIX环境高级编程》的第五章关于缓存的说明,里面详细介绍了如何设置缓冲的问题

论坛徽章:
0
7 [报告]
发表于 2004-12-25 22:16 |只看该作者

c自己设置缓冲区情况下输出问题

谢谢。我去看看

论坛徽章:
0
8 [报告]
发表于 2004-12-25 22:37 |只看该作者

c自己设置缓冲区情况下输出问题

呵呵,看了楼上的自己的C网站。做的不错呀。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP