0

double 変数への文字入力が正しいデータ型であることを確認しようとしています。

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 に答える