先上一段代码:
按照一般正常输入是没问题,可是如果首先输入了类似'x'的字符,那么代码会永远循环提示“try again”。
原理:在scanf转换数字的时候,它遇到的任何非数字字符都会终止转换并被保留在输入流中,(注意输入流概念),因此,除非采用了其他的步骤,那么未预料的非数字输入会不断“阻塞”scanf,导致scanf无法越过改错误字符去处理后边合法的数字字符。
先上一段代码:
按照一般正常输入是没问题,可是如果首先输入了类似'x'的字符,那么代码会永远循环提示“try again”。
原理:在scanf转换数字的时候,它遇到的任何非数字字符都会终止转换并被保留在输入流中,(注意输入流概念),因此,除非采用了其他的步骤,那么未预料的非数字输入会不断“阻塞”scanf,导致scanf无法越过改错误字符去处理后边合法的数字字符。