#include <stdlib.h> unsigned long int strtoul(const char *nptr, char **endptr, int base); unsigned long long int strtoull(const char *nptr, char **endptr, int base);
Строка должна начинаться с произвольного количества пустых символов (определяемых при помощи isspace(3)), затем должен идти знак `+' или `-' (если есть). Если base равно нулю или 16-и, то строка может начинаться с приставки `0x', что означает использование шестнадцатеричной системы исчисления; иначе, если base равно нулю, используется десятичная система счисления, кроме случая, когда последующий символ также равен `0': тогда используется восьмеричная система исчисления.
Остаток строки, таким образом, конвертируется в беззнаковое целое число. Этот процесс останавливается, если в строке встречается некорректное значение (например, не соответствующая системе исчисления цифра). Символ `A' в верхнем или нижнем регистре означает 10, `B' означает 11 и так далее (до `Z', означающей 35).
Если значение endptr не NULL, то strtol() записывает адрес первого некорректного значения в *endptr. Если в строке вообще нет цифр, то strtol() сохраняет начальное значение nptr в *endptr (и возвращает 0). Соответственно, если *nptr не равно `\0', а **endptr равно `\0' по возвращении, то вся строка состоит из корректных символов.
Функция strtoull() работает так же, как и strtoul(), но возвращает целое число типа unsigned long long int.
Некоторые реализации могут также устанавливать errno в EINVAL в случае, когда преобразование не было выполнено (не было встречено цифр и возвращен 0).
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |