免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: zeroone1

如何清空输入缓冲区的内容 [复制链接]

论坛徽章:
0
发表于 2004-06-21 23:11 |显示全部楼层

如何清空输入缓冲区的内容

原帖由 "lenovo" 发表:
还有楼主最好把输出结果也贴出来,
看看怎么回事。


  1. #include <stdio.h>;
  2. #include <stdlib.h>;

  3. int main(void)
  4. {
  5.   char ch;
  6.   for(int i=0;i<10;i++){
  7.     printf("Input: ");
  8.     scanf("%c",&ch);
  9.     printf("Your input: %c\n",ch);
  10.     fflush(stdin);
  11.   }
  12.   exit(EXIT_SUCCESS);
  13. }
复制代码



如下是程序执行结果:(有点乱,不好意思)


$ ./test_ch
/*输入 a */
Input: a           /*我输入一个a,得了这结果*/
Your input: a
Input: Your input:
/*输入 a 按ENTER 后到程序执行到这里,然后棘再提示输入(如下我输入b)*/

Input: b
Your input: b
Input: Your input:

Input: c
Your input: c
Input: Your input:

Input: d
Your input: d
Input: Your input:

Input: kda
Your input: k
Input: Your input: d
[/code]

论坛徽章:
0
发表于 2004-06-21 23:14 |显示全部楼层

如何清空输入缓冲区的内容

原帖由 "lenovo" 发表:
你的程序怎么又变成for(;这样的。
晕。


随便了,,都差不多的,,我不限制是想搞个死热循环嘛

本来最上我也想用for(;的,只是“循环”不会打,就改了,,
现在会打了,

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2004-06-21 23:16 |显示全部楼层

如何清空输入缓冲区的内容

我估计是你操作系统的问题。
据说rh9.0很差劲,
还不如用rh7.0呢。
heishijiao 该用户已被删除
发表于 2004-06-22 01:06 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
heishijiao 该用户已被删除
发表于 2004-06-22 01:30 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2004-06-22 06:37 |显示全部楼层

如何清空输入缓冲区的内容

C标准规定 fflush()函数是用来刷新输出(stdout)缓存的。对于输入(stdin),它是没有定义的。

但是有些编译器也定义了 fflush( stdin )的实现,比如微软的VC。其它编译器是否也定义了 fflush( stdin )的实现应当查找它的手册。GCC编译器没有定义它的实现,所以不能使用 fflush( stdin )来刷新输入缓存。

对于没有定义 fflush( stdin )的编译器,可以使用 fgets()函数来代替它(比用 getchar()、scanf()等函数通用性好)。比如楼主提供的第一个程序中可以这样忽略输入流中留下的回车等其它输入,从而使下一次的输入总保持一个“干净”的状态。
[code]
// ...
char sbuf[1024];
// ...
// fflush(stdin); // 用下面一句代替
fgets( sbuf, 1024, stdin );
// ...

论坛徽章:
0
发表于 2004-06-22 14:28 |显示全部楼层

如何清空输入缓冲区的内容

^_^

谢谢各位

都收到了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP