Программирование на C и C++

Онлайн справочник программиста на C и C++

strtol, strtoul

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.

Пример: