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