Преобразовать строку в длинное целое число
#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 системной библиотеки