试图在C++中验证双精度有效输入的循环错误

loop error trying to verify valid input to double in C++

本文关键字:有效输入 循环 错误 双精度 验证 C++      更新时间:2023-10-16

我正在尝试验证双变量的字符输入是否具有正确的数据类型。

double number = 0;
int validCheck = 0;
char another = 'y';
while(another == 'y')
{
    cout<<"Please enter a number: ";
    validCheck = scanf("%lf", &number);
    while (validCheck !=1)
    {
        cout<<"Invalid input, please enter a number: ";
        validCheck = scanf("%lf", &number);
    }

当我编译它时,如果我给出了一个有效的输入,它会很好地工作,并且无效的输入确实会将它放入while循环,但它并没有检查另一个输入,而是在我的控制台上滥发"无效输入,请输入一个数字:",甚至没有要求新的输入。我错过了什么?

无效输入保留在输入缓冲区中,因此scanf总是使用相同的格式错误的输入。您需要清除输入缓冲区,例如

int c;
do {
    c = getchar();
}while(c != 'n' && c != EOF);