C语言,怎样删除输入缓冲区里面的内容??

民兵戈尔丹 2011-01-16 04:04:46
#include <stdio.h>

int main(void)
{
int array[10];
int i;

printf("enter 5 int numbers:\n");
for (i = 0; i < 5; i++)
{
scanf("%d", &array[i]);
}

int a;
scanf("%d", &a);

printf("%d\n", a);

return 0;
}

以上程序若为数组赋值时输入的数字不小心多于5个 前五个被写在数组中,第六个被写在变量a中
怎样在给数组赋值之后清除缓冲区中的剩余内容呢?

...全文
617 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
huhaifengasd 2011-09-08
  • 打赏
  • 举报
回复
fgets接收
AnYidan 2011-01-17
  • 打赏
  • 举报
回复
读出后扔掉
wizard_tiger 2011-01-17
  • 打赏
  • 举报
回复
fflush(stdin);
这个就可以吧!
dfatfat 2011-01-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 prohibit 的回复:]

C/C++ code
fflush(stdin);
[/Quote]
+1
非标准 但是 可以使用
niuchengshi 2011-01-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ischarles 的回复:]

你的程序只有5次scanf,所以应该不会出现你说的情况,即不小心输入了第六个数字。
关于清空缓存区,你可以用如下代码(跨平台可移植):
C/C++ code

char c;
while ((c = getchar()) != '\n' && c != EOF);
[/Quote]

char c 应改为 int c 否则 c !=EOF 会有问题。
niuchengshi 2011-01-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ischarles 的回复:]

你的程序只有5次scanf,所以应该不会出现你说的情况,即不小心输入了第六个数字。
关于清空缓存区,你可以用如下代码(跨平台可移植):
C/C++ code

char c;
while ((c = getchar()) != '\n' && c != EOF);
[/Quote]
+1
leetow2003 2011-01-16
  • 打赏
  • 举报
回复
http://blog.sina.com.cn/s/blog_5f18ff880100nfnf.html
zeif123 2011-01-16
  • 打赏
  • 举报
回复
不知道用dos的cls指令可不可以
ischarles 2011-01-16
  • 打赏
  • 举报
回复
你的程序只有5次scanf,所以应该不会出现你说的情况,即不小心输入了第六个数字。
关于清空缓存区,你可以用如下代码(跨平台可移植):

char c;
while ((c = getchar()) != '\n' && c != EOF);
itslmde 2011-01-16
  • 打赏
  • 举报
回复
fflush(stdin), 不可移植,GNU 平台没有问题,man手册有明确声明。
其他平台就不清楚了。
l369294289 2011-01-16
  • 打赏
  • 举报
回复
fflush(stdin)
  • 打赏
  • 举报
回复
scanf后面用fflush 我就只会这个
yuppy 2011-01-16
  • 打赏
  • 举报
回复
你这情况用fflush()就可以了..

还有个函数叫ungetc(int c, FILE *f)
迷糊 2011-01-16
  • 打赏
  • 举报
回复
+1
[Quote=引用 2 楼 prohibit 的回复:]

C/C++ code
fflush(stdin);
[/Quote]
prohibit 2011-01-16
  • 打赏
  • 举报
回复
fflush(stdin);
民兵戈尔丹 2011-01-16
  • 打赏
  • 举报
回复
用flush()刷新输出缓冲区
sync()刷新输入缓冲区

但是这两个函数只是刷新作用啊 不能删除缓冲区内容

69,371

社区成员

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

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