Обработка правильности ввода (язык С)

Необходимо обработать ввод: Если введено число - все ОК. Если не число, нужно ввести еще раз. И так до тех пор, пока не будет верный ввод.

'''
    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 );
→ Ссылка