scanf,那些被忽略的

先上一段代码:

按照一般正常输入是没问题,可是如果首先输入了类似'x'的字符,那么代码会永远循环提示“try again”。

原理:在scanf转换数字的时候,它遇到的任何非数字字符都会终止转换并被保留在输入流中,(注意输入流概念),因此,除非采用了其他的步骤,那么未预料的非数字输入会不断“阻塞”scanf,导致scanf无法越过改错误字符去处理后边合法的数字字符。

原文地址:https://www.cnblogs.com/ycpanda/p/3637276.html