Мне нужно получить номер кредитной карты в качестве входных данных для упражнения, поэтому я использую функцию fgets (получаю ее как строку, чтобы проверить, действительно ли это число), а затем strtol, чтобы сделать ее длинным целое число. Но целочисленное значение, возвращаемое функцией, не соответствует значению в строке.
while (*endptr != '\n') {
char card_number_string[20];
char *endptr;
long int card_number;
printf("Number: ");
fgets(card_number_string, 20, stdin);
card_number = strtol(card_number_string, &endptr, 10);
printf("Result: %ld", card_number);
}
Например, когда я ввожу значение 4003600000000014, вывод strtol, показанный в printf, будет 2147483647.
Это ошибка в моем коде? Или функция возвращает что-то другое, например:
Примечание: все переменные объявлены поверх основной функции, они находятся там, чтобы знать, как они были объявлены