strtol, strtoll - перевод строки в длинное целое (long int)
НАЗВАНИЕstrtol, strtoll - перевод строки в длинное целое (long
int)
СИНТАКСИС
#include
long int
strtol(const char *nptr, char **endptr, int base);
long long int
strtoll(const char *nptr, char **endptr, int base);
ОПИСАНИЕ
Функция strtol() конвертирует начальную часть строки nptr
в длинное целое в соответствии с указанным base, которое
должно находиться в диапазоне от 2-х до 36-х включительно
или быть равным нулю.
Строка должна начинаться с пустых символов (определяемых
при помощи isspace(3)), далее должен следовать один знак:
`+' или `-' (если есть). Если base равно нулю или 16-и, то
строка может начинаться с приставки `0x', что означает
использование шестнадцатеричной системы исчисления; иначе,
если base равно нулю, используется десятичная система
исчисления, кроме случая, когда последующий символ также
равен `0': тогда используется восьмеричная система
исчисления.
Остаток строки, таким образом, конвертируется в целое
число (long int). Этот процесс останавливается, если в
строке встречается некорректное значение (например, не
соответствующая системе исчисления цифра). Символ `A' в
верхнем или нижнем регистре означает 10, `B' означает 11
и так далее (до `Z', означающей 35).
Если значение endptr - не NULL, то strtol() записывает
адрес первого некорректного значения в *endptr. Если в
строке вообще нет цифр, то strtol() сохраняет начальное
значение nptr в *endptr (и возвращает 0). В частности,
если *nptr не равно `\0', а **endptr равно `\0' по
возвращении, то вся строка состоит из корректных символов.
Функция strtoll() работает так же, как и strtol(), но
возвращает значение типа long long int.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция strtol() возвращает результат преобразования, если
значение не вызвало "переполнения" или не было крайне
маленьким. Если происходит последнее, то strtol()
возвращает LONG_MIN. Если же произошло "переполнение", то
strtol() возвращает LONG_MAX. В обоих случаях глобальной
переменной errno присваивается значение ERANGE. То же
самое относится к функции strtoll() (только вместо
LONG_MIN и LONG_MAX возвращаются значения LLONG_MIN и
LLONG_MAX).
КОДЫ ОШИБОК
ERANGE данная строка не входит в обрабатываемый диапазон
чисел.
EINVAL (не включено в C99) Аргумент base содержит
неподдерживаемое значение.
Некоторые реализации могут также устанавливать errno в
EINVAL в случае, когда преобразование не было выполнено
(не было встречено цифр и возвращен 0).
ЗАМЕЧАНИЯ
В локалях, отличных от локали "C", могут приниматься и
другие строки.
СООТВЕТСТВИЕ СТАНДАРТАМ
Функция strtol() соответствует SVID 3, BSD 4.3, ISO 9899
(C99) и POSIX, а функция strtoll() соответсвует ISO 9899
(C99) и POSIX-2001.