我目前正在制作一个弹丸运动计算器。没什么超级复杂的,但是我正在使用如下的健全性检查:
printf("Please enter initial velocity: ");
while (!scanf("%lg", &velocity)|| velocity<0){
getchar();
printf("Velocity is not valid, enter again: ");
}
它可以很好地停止负数和单个字符,但是,当用户输入一个包含多个字符的单词时,第二个printf将重复,等于该单词中包含多个字符。
我如何做到这一点,当用户输入一个单词时,健全性检查仍然可以正常运行,但只能运行一次?
答案 0 :(得分:0)
循环调用getchar()
直到看到换行符:
printf("Please enter initial velocity: ");
while (!scanf("%lg", &velocity)|| velocity<0){
while (getchar() != '\n');
printf("Velocity is not valid, enter again: ");
}