Справочник по C/C++
strtol()

#include <stdlib.h>
long int strtol(const char *start, char **end, int radix);

Описание

Преобразует строковое представление числа в значение типа long int

Функция strtol() преобразует строковое представление числа, которое содержится в строке, адресуемой параметром start, в значение типа long int и возвращает полученный результат. Основание системы счисления, в которой представлено преобразуемое число, определяется параметром radix. Если значение radix равно нулю, то основание определяется(по первым символам строки) согласно правилам, которые диктуют использование определенных спецификаций. Если значение radix не равно нулю, то оно должно находиться в диапазоне 2-36.

В версии С99 к параметрам start и end применен квалификатор restrict.

Функция strtol() работает следующим образом. Сначала в строке, адресуемой параметром start, удаляется любой пробельный символ. Затем читается каждый символ, составляющий число, Любой символ, который не может быть частью длинного целого числа, приведет к остановке процесса преобразования. К ним относятся пробельные символы, знаки препинания и символы. Наконец, параметр end устанавливается так, чтобы указывать на "непреобразованный" остаток исходной строки, если таковой существует. Это означает, что если функция strtol() вызывается с аргументом "100 Pliers", то она возвратит значение 100L, а параметр end будет указывать на пробел, предшествующий слову "Pliers".

Если результат не может быть представлен как значение типа long int, функция strtol() возвращает либо значение LONG_MAX, либо значение LONG_MIN, а глобальная переменная errno устанавливается равной значению ERANGE, свидетельствующему об ошибке пределов диапазона. Если параметр start не указывает на число, никакого преобразования не выполняется и функция возвращает нуль.