Преобразовать строку в длинное целое число
#include <stdlib.h>long int strtol( const char *ptr,char **endptr,int base );long long strtoll( const char *ptr,char **endptr,int base );
NULL
, функция сохранит в эту переменную первый найденный непреобразуемый символ строки.0x
или 0X
, то число представлено в шестнадцатеричной системе. Если первый символ есть 0
, то число представлено в восьмеричной системе. В противном случае речь идет о десятеричной системе счисления. 2
и 36
. Символы a-z
и A-Z
, при этом, определяют значения от 10
до 35
. Допустимыми в этом случае являются лишь те цифры в строке, которые меньше основания base. Если base равно 16
, то префикс 0x
или 0X
могут опционально предшествовать последовательности допустимых символов в строке. libc
Функции strtol() и strtoll() конвертируют строку ptr в объект типа long int
и long long
соответственно.
Эти функции распознают строки, которые содержат следующее:
Конвертирование прекращается при обнаружении первого непреобразуемого символа. Если endptr не равно NULL
, то указатель на первый такой символ будет сохранен в переменной, на которую уазывает endptr.
Сконвертированное значение.
Если корректные символы в строке приводят к переполнению значения, функция вернет LONG_MAX
|| LONGLONG_MAX
или LONG_MIN
|| LONGLONG_MIN
, в зависимости от знака и установит errno в ERANGE
. Если base вне допустимого диапазона, функция вернет 0
и установит errno в EINVAL
.
#include <stdlib.h>int main( void ){long int v;v = strtol( "12345678", NULL, 10 );return (EXIT_SUCCESS);}
ANSI, POSIX 1003.1
atoi(), atol(), errno, itoa(), ltoa(), sscanf(), strtoul(), ultoa(), utoa()
Предыдущий раздел: Описание API системной библиотеки