c语言清除缓冲区的数据?

#include<stdio.h>main(){inta,b,max,ret;printf("Inputa,b:");ret=scanf("%d,%d",&a,&b);w... #include <stdio.h>
main()
{
int a,b,max,ret;
printf("Input a,b:");
ret = scanf("%d,%d",&a,&b);
while (ret!=2)
{
while(getchar()!='n');
printf("Input a ,b:");
ret = scanf("%d,%d",&a,&b);
}
max =a >b? a:b;
printf("max = %d\n",max);
}
其中第二个while循环什么作用?
while(getchar()!='n');
printf("Input a ,b:");
ret = scanf("%d,%d",&a,&b);
怎么清除的缓冲区中的错误数据?
对不起打错了··第二个循环 ·while(getchar()!='\n');
是怎么回事?
展开
 我来答
金色潜鸟
推荐于2018-10-01 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5714万
展开全部
while(getchar()!='n'); -- 应当是 while(getchar()!='\n'); 这是不断循环取字符,直到取到 Enter 键时结束循环。作用,清除上面一次输入时残留在输入流中的字符。
改用 fflush(stdin); 更佳。
ret = scanf("%d,%d",&a,&b); ret 为成功读得的数据个数。
清除的缓冲区中的残留数据: if (ret != 2) fflush(stdin);
NO1晓飞
2013-04-01 · 超过27用户采纳过TA的回答
知道答主
回答量:168
采纳率:0%
帮助的人:85.2万
展开全部
要想实现a,b的输入,先要打个回车确认后再给A,B赋值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Roxxette
2013-03-31 · TA获得超过828个赞
知道小有建树答主
回答量:1341
采纳率:0%
帮助的人:824万
展开全部
while(getchar()!='n'); //空循环,仅当输入n时跳出。重新输入ab前需要敲一个'n'确认
输入缓冲区不需要清除。输出的不能清除
追问
对不起打错了··第二个循环 ·while(getchar()!='\n');
是怎么回事?
追答
重新输入ab前需要敲一个'\n'(回车)确认
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
徐霄沛
2013-04-01 · 超过24用户采纳过TA的回答
知道答主
回答量:315
采纳率:100%
帮助的人:122万
展开全部
仅当输入n时跳出。重新输入ab前需要敲一个'n'确认。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
KernelX编程
2013-04-01 · 贡献了超过131个回答
知道答主
回答量:131
采纳率:0%
帮助的人:48.1万
展开全部
'\n'是回车,
while(getchar()!='\n')就是说, 输入的字符不是 回车 就进入循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式