C语言,scanf("%*s")

请教各位大佬,为什么这个教学示例需要用scanf("%*s")?if后面不是还有个scanf("%d")吗,这个scanf("%d")的值不是会重新赋值给choice吗?... 请教各位大佬,为什么这个教学示例需要用scanf("%*s")?if后面不是还有个scanf("%d")吗,这个scanf("%d")的值不是会重新赋值给choice吗???即使第一次输入非法,但是后面的scanf("%d")又会赋值给choice啊.然后while继续判断搞不懂啊~求大佬解惑............ 展开
 我来答
White_MouseYBZ
2018-05-28 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6332万
展开全部
表示你输入错了(不是数字)时把错误符号从输入缓冲区里吸收掉,再由后面的两行告诉你重新输入……
追问
但是后面不是还有个scanf()么?输错了后面的scanf()会重新赋值给变量啊?
然后while继续判断变量.
我的理解不对么??????
追答
看清楚了,后面的是scanf("%d",&choice);,是让你输入整数的;没有把上次输入的错误符号从输入缓冲区中冲刷掉,后面的scanf("%d",&choice);不是认为又错了吗?它又不接收,错误符号还留在输入缓冲区里,再下一次还是这样的错误,那不是死循环了吗?scanf("%*s");就是把输入缓冲区里的错误符号冲刷干净,等待由scanf("%d",&choice);输入正确数据……
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式