Обработка правильности ввода (язык С)
Необходимо обработать ввод: Если введено число - все ОК. Если не число, нужно ввести еще раз. И так до тех пор, пока не будет верный ввод.
'''
int c;
while (!scanf("%d", &c)) {
printf("Wrong input!\n");
}
'''
Если ввести "-", то все работает как надо, если ввести , например знак "=", то функция scanf перестает запускаться, выводится много раз "Wrong input!". Кто знает, как обработать ввод правильно? И почему scanf так себя ведет?
Ответы (1 шт):
Автор решения: DiD
→ Ссылка
Так работать не будет, получайте от пользователя строку, проверяйте введенные данные и потом конвертируйте в число.
#include <stdio.h>
#include <stdlib.h>
/* ... */
char с[20];
scanf("%s", &с);
int i = atoi( с );
scanf("%s", &с);
float f = atof( с );
printf("i = %d\n", i );
printf("f = %.6f\n", f );
printf("i * f = %.6f\n", i * f );