В настоящее время моя проблема заключается в том, что если пользователь вводит буквы вместо цифр, приглашение просто повторяется, не вводя нового пользователя.
scanf()
ожидает двадвойной ввод от пользователя:
test = scanf("%lf %lf", &low, &hi);
Когда вы вводите буквы вместо числа в качестве ввода для scanf()
, он не использует их, потому что они не совпадают с заданной строкой формата, и оставляет их во входном буфере,Вы должны иметь в виду, что когда вы даете буквы вместо цифр, scanf()
должен возвращать 0
, поскольку он их не использует.Поскольку scanf()
не использует неверный ввод, в следующей итерации цикла scanf()
найдите в буфере неизрасходованный неверный ввод и снова пропустите их.Вот почему ваша программа не останавливается для ввода при вводе букв в качестве ввода.Чтобы решить эту проблему, вы должны удалить неверный ввод из буфера.Вы можете сделать:
do {
printf("Enter endpoints of interval to be integrated (low hi): ");
test = scanf("%lf %lf", &low, &hi);
if (test != 2) {
badInput(low);
badInput(hi);
printf("Error: Improperly formatted input");
int c;
while((c = getchar()) != '\n' && c != EOF) // <=== This loop read the extra input characters and discard them
/* discard the character */;
}
......
......