首页 > 解决方案 > 使用 getchar() 时进行多次完整性检查,我该如何避免?

问题描述

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

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

它在停止负数和单个字符方面非常有效,但是当用户输入一个包含多个字符的单词时,第二个 printf 将重复等于单词中的字符数。

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

标签: ccodeblocks

解决方案


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

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

推荐阅读