关于scanf()的输入验证问题。
使用scanf读取数字,当输入值是英文或其他字符时,就无限循环了,使用scanf("%f", &u) != 1为什么没有用。百度了解决办法,说是用getchar()函数舍去。但我想知道无限循环的原因,请各位大佬指点。

while (scanf("%f", &u) != 1) { printf("Please correct number,such as 2.5,-1.78E8,or 3 \n:"); //while (getchar() != '\n'); }