У меня есть этот код, который читает целое число, используя scanf, и проверяет, является ли оно целым числом, просматривая буфер.
int e_1;
char c[1];
// noNeedToCleanBuffer is used to avoid buffer cleaning the first time.
int noNeedToCleanBuffer = 1;
do {
// Clears the buffer.
if (!noNeedToCleanBuffer)
while ((c[0] = getchar()) != '\n') ;
noNeedToCleanBuffer = 0;
printf("Input an integer value: \n");
e_1 = scanf("%d", &n);
c[0] = getchar();
} while ((e_1 != 1 && c[0] != 10) || (e_1 == 1 && c[0] != 10));
Однако я не могу понять, как проверить, находится ли ввод между INT_MIN и INT_MAX (я получаю это из limit.h).
Я думал о том, чтобы получить число в виде строки и сравнить его с двумя строками, которые будут представлять INT_MIN и INT_MAX, но, поскольку я использую стандарт c99, мне не разрешено использовать atoi () или itoa ().