Как мне избежать нескольких итераций проверки работоспособности при использовании getchar ()? - PullRequest
0 голосов
/ 11 октября 2018

В настоящее время я делаю калькулятор движения снаряда.Ничего супер сложного, однако я использую проверку работоспособности, как показано ниже:

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

Он отлично работает при остановке отрицательных чисел и одиночных символов, однако, когда пользователь вводит слово из нескольких символов, второй printf будет повторятьравно как много символов в слове.

Как мне сделать так, чтобы, когда пользователь вводит слово, проверка работоспособности все еще функционировала, как и должна, но только один раз?

1 Ответ

0 голосов
/ 11 октября 2018

Звоните getchar() в цикле, пока не увидите новую строку:

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