Как считать значения с клавиатуры ,не используя Scanf ,когда пишешь код на С и работаешь с целочисленными значениями
Не допираю как считать значения с клавиатуры ,без использования Scanf Подскажите что-то ,что поможет это сделать.
Ответы (1 шт):
Автор решения: Sergey
→ Ссылка
как считать значения с клавиатуры ,без использования Scanf
Как-то так:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <limits.h>
int main (int argc, char *argv[]) {
long int val;
char buf[128];
char *cp, *endptr;
/* Вводим строку */
printf("Введите значение : ");
cp = fgets(buf, 128, stdin);
if (cp == NULL) {
printf("Ошибка ввода!\n");
return -1;
}
/* Строку преобразуем в целое значение*/
errno = 0;
val = strtol(buf, &endptr, 10);
/* Были ошибки при преобразовании ? */
if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))
|| (errno != 0 && val == 0)) {
perror("strtol");
exit(EXIT_FAILURE);
}
/* А вообще - цифры были ? */
if (endptr == buf) {
fprintf(stderr, "Цифры отсутствуют\n");
exit(EXIT_FAILURE);
}
/* strtol() успешно преобразовала число */
printf("Введено значение %ld\n", val);
}
Вместо strtol можно было бы использовать atoi. Это было бы гораздо проще, но тогда невозможно узнать, что при вводе произошла ошибка.