atoi (Си)
Функция atoi (ASCII to integer, из ASCII в целое число) в языке программирования Си используется для приведения (конвертации) строки в числовой вид.
int atoi(const char *str)
Аргумент str
означает строку, представленную в виде массива символов, содержащего символы знакового целого (тип int
) числа. Строка должна быть нуль-терминированной, то есть оканчиваться символом «\0». Когда atoi()
получает строку без числовых последовательностей, то в этом случае возвращает ноль (0). Строка должна начинаться или непосредственно с числовой последовательности, или с любого сочетания пробельных символов. После обработки числовой последовательности любой нечисловой остаток строки (если он есть) игнорируется. Если строка содержит корректную последовательность цифр, представляющих число 0, то также возвращается 0, при этом по возвращаемому числу невозможно определить, содержит ли строка корректное число или нет. Более новая функция strtol не имеет подобного недостатка, поэтому в тех случаях, когда это критично, следует использовать её. Напротив, atoi при обработке значений из диалоговых окон позволяет задавать поля наподобие "введите число повторов при ошибке чтения" и заполнять их по умолчанию не числовым, а интуитивно более понятным текстовым значением наподобие "пропускать ошибки без повторных попыток", которое будет интерпретировано как "0 повторов" без лишних действий программиста.
Варианты функции atoi — atol, atof и atoll (впоследствии известная как atoq) используются для приведения строки к типам long
, double
или long
long
, соответственно:
long atol(const char *str)
double atof(const char *str)
long long atoll(const char *str)
(C99)
Соответствие стандартам
правитьФункции atoi, atof и atol являются частью стандартной библиотеки Си (ISO) C89, а функция atoll была добавлена в стандарте C99.
См. также
правитьСсылки
править- Описание atoi из C++ Reference (англ.)
- atof, atoi, atol — преобразовать в плавающее — пример использования (рус.)
- Функция atoi — описание и пример использования (рус.)
- atoi в man’ах (рус.)