Проверьте макс. целое число в scanf

Используйте Powershell! Созданный в cmdlets для управления процессами. Примеры здесь (твердый путь), здесь (встроили) и здесь [еще 112].

9
задан Iharob Al Asimi 18 January 2015 в 11:58
поделиться

3 ответа

Единственный способ преобразовать строковое представление числа в фактическое значение и следить за переполнением использовать функции из strto .. группа. В вашем случае вам нужно прочитать строковое представление числа, а затем преобразовать его с помощью функции strtol .

Остерегайтесь ответов, которые предлагают использовать atoi или sscanf , чтобы выполнить окончательное преобразование. Ни одна из этих функций не защищает от переполнения.

13
ответ дан 4 December 2019 в 13:48
поделиться

Считайте его в строку и проверьте длину, затем вызовите либо atol () , либо sscanf () в строке для преобразования это в int.

-1
ответ дан 4 December 2019 в 13:48
поделиться

Другой способ - установить максимальное количество разрядов для анализа.

Например:

  int n;
  scanf("%5d", &n); // read at most 5 digits
  printf("%i\n", n);
3
ответ дан 4 December 2019 в 13:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: