long strtol(const char *start, char **end, int radix)
unsigned long strtoul(const char *start, char **end, int radix)
Функция strtol() конвертирует строковое представление числа, которое хранится в строке start, в длинное целое и возвращает результат. Функция strtoul() выполняет то же самое преобразование, но результат представлен в формате unsigned long. Основание системы счисления определяется параметром radix. Если radix равен 0, то задание основания системы счисления определяется правилами, которым подчиняется спецификация констант. Если radix имеет значение, отличное от 0, то оно должно находиться в интервале от 2 до 36.
Функции strtol() и strtoul() работают следующим образом. Во-первых, минуются все специальные символы (пробелы, символы табуляции и т.д.). Затем читается каждый символ, входящий в представление числа. Если какой-то символ не может входить в представление числа, то чтение символов прекращается. Таким символом может быть пробел, знак пунктуации и другой нецифровой символ. Если при этом у исходной строки остается остаток от преобразования, то на него будет указывать параметр end. Это означает, что если вызвать функцию strtol() с передачей ей в качестве параметра 100.00 Pliers, то будет возвращена величина 100L, а параметр end будет указывать на пробел перед словом «Pliers».
Если возникает ошибка преобразования, то возвращается величина LONG_MAX в случае переполнения, либо LONG_MIN в случае потери значимости. Для функции strtoul() возвращается ULONG_MAX. Если никакое преобразование невозможно, то возвращается 0.