0

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

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 循环中,但它不会检查另一个输入,它只是向我的控制台发送垃圾邮件“无效输入,请输入一个数字: " 甚至不要求新的输入。我错过了什么?

4

1 回答 1

2

无效输入保留在输入缓冲区中,因此scanf始终会显示相同的格式错误的输入。您需要清除输入缓冲区,例如

int c;
do {
    c = getchar();
}while(c != '\n' && c != EOF);
于 2012-09-14T01:58:44.070 回答