使用getchar()时多次进行健全性检查,如何避免?

时间:2018-10-11 16:52:36

标签: c codeblocks

我目前正在制作一个弹丸运动计算器。没什么超级复杂的,但是我正在使用如下的健全性检查:

printf("Please enter initial velocity: ");
while (!scanf("%lg", &velocity)|| velocity<0){
     getchar();
     printf("Velocity is not valid, enter again: ");
}

它可以很好地停止负数和单个字符,但是,当用户输入一个包含多个字符的单词时,第二个printf将重复,等于该单词中包含多个字符。

我如何做到这一点,当用户输入一个单词时,健全性检查仍然可以正常运行,但只能运行一次?

1 个答案:

答案 0 :(得分:0)

循环调用getchar()直到看到换行符:

printf("Please enter initial velocity: ");
while (!scanf("%lg", &velocity)|| velocity<0){
     while (getchar() != '\n');
     printf("Velocity is not valid, enter again: ");
}