如何检测用户非法输入?

如图,我的函数要求输入float类型参数,并用scanf返回值检测,为何第一种情况会进入死循环二第二种不会。

img

img

img

img

因为一旦一次输入错误,输入信息会一直在输入缓冲区。第二种方法中的getchar()正好消化掉了缓冲区中的信息,所以外部循环又可以正确接收输入数据了。
另外第二种方法中,while循环后面不应该有分号
第一种方法中,你在while语句中增加 fflush(stdin); 清空一下输入缓冲区内容,应该可以

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632