为什么,为什么??????

zhangjgbupt 2007-09-01 08:26:18
void main()
{
char buf2[10];
setbuf(stdin,NULL);
while(int ch=getchar())
{
printf("%c",ch);
}
getchar();
}
我把输入流的缓冲区设置为空,为什么在输入的时候还是有缓冲,不像想象中的输入一个字符,程序就处理一个字符,非得等你回车之后才继续运行
...全文
274 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yy86710 2007-09-02
  • 打赏
  • 举报
回复
编程爱好者,专业人士,在这里您可以和更多的同行交流,我们的宗旨是:平等互利,共同进步,努力将群建设成为一个具有完善体系,
管理严谨的讨论专区。有意者请加入qq群:9494256 【设计之源】(主)
或者访问群官方论坛:http://mcbbs.uu1001.com/
zzyjsjcom 2007-09-02
  • 打赏
  • 举报
回复
mark
gs0038 2007-09-02
  • 打赏
  • 举报
回复
mark
shanfeng119 2007-09-01
  • 打赏
  • 举报
回复
getch(),getche()都是读入一个字符即进行处理,不同的是getch()不回显,而getche()会将字符回显到屏幕。

getchar()虽然也是返回一个字符,但它要遇到回车才开始返回,返回输入的第一个字符
aozhi 2007-09-01
  • 打赏
  • 举报
回复
getch(),getche()不回显,需要自己处理一下。
banzhiyu 2007-09-01
  • 打赏
  • 举报
回复
LZ有问题不妨看看这个。
http://blog.csdn.net/banzhiyu/archive/2007/05/28/1627695.aspx
banzhiyu0517 2007-09-01
  • 打赏
  • 举报
回复
路过,学习。以前也看过关于getchar,getch的问题。
zhangjgbupt 2007-09-01
  • 打赏
  • 举报
回复
按回车是刷新缓冲,不过你不设置缓冲区相当于输入直接输出,可是你不按回车程序可不知道你是不是输入完毕。
你设置缓冲区为空,只是说明程序不经过缓冲处理而已。
-----------------------------------------
应该不是这个原因吧,如果把输入缓冲区设置为kong,当输入一个字符时,就应该及时刷新。
我看了CHROX(凌晨三点) 给得东西,使用getch就可以按照预期得运行,Forkerl(清者自清)可以试试
zhangjgbupt 2007-09-01
  • 打赏
  • 举报
回复
那在linux下呢?
Forkerl 2007-09-01
  • 打赏
  • 举报
回复
按回车是刷新缓冲,不过你不设置缓冲区相当于输入直接输出,可是你不按回车程序可不知道你是不是输入完毕。
你设置缓冲区为空,只是说明程序不经过缓冲处理而已。
CHROX 2007-09-01
  • 打赏
  • 举报
回复
setbuf() Doesn't Control MS-DOS Buffer or Keyboard Buffer
The getchar() function will wait for a carriage return even if setbuf() is used to unbuffer stdin.
参见:http://support.microsoft.com/kb/45563/en-us

getch(),getche()没有用到缓冲区,可以引入头文件conio.h使用它们

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧