Поделиться через


atol, , _atol_l_wtol_wtol_l

Преобразует строку в длинное целое число.

Синтаксис

long atol(
   const char *str
);
long _atol_l(
   const char *str,
   _locale_t locale
);
long _wtol(
   const wchar_t *str
);
long _wtol_l(
   const wchar_t *str,
   _locale_t locale
);

Параметры

str
Строка для преобразования.

locale
Используемый языковой стандарт.

Возвращаемое значение

Каждая функция возвращает значение long, которое создается за счет интерпретации входных символов как числа. Возвращаемое значение имеет значение 0L , atol если входные данные не могут быть преобразованы в значение этого типа.

Если эти функции переполнены большими положительными целочисленными значениями, они возвращаются LONG_MAX. Если функции переполнены большими отрицательными целыми значениями, LONG_MIN возвращается. Во всех случаях, когда диапазон не соблюдается, errno принимает значение ERANGE. Если параметр передан NULL, вызывается обработчик недопустимых параметров, как описано в разделе проверки параметров. Если продолжение выполнения разрешено, эти функции устанавливают для errno значение EINVAL и возвращают 0.

Замечания

Эти функции преобразуют символьную строку в длинное целое значение (atol).

Входная строка представляет собой последовательность символов, которые могут обрабатываться как числовое значение указанного типа. Функция перестает считывать входную строку на первом символе, который не может распознаваться как часть числа. Этот символ может быть пустым символом (\0 или L\0) завершающим строку.

Аргумент str для atol принимает следующую форму:

[] [whitespace] [sign] [digits]

A whitespace состоит из пробелов или символов табуляции, которые игнорируются; sign либо плюс (+), либо минус (-); и digits являются одним или несколькими цифрами.

Функция _wtol идентична функции atol за тем исключением, что принимает строку расширенных символов.

Версии этих функций с суффиксом _l идентичны, за исключением того, что они используют переданный параметр языкового стандарта вместо текущего языкового стандарта. Дополнительные сведения см. в разделе Locale.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Сопоставления подпрограмм универсального текста

TCHAR.H рутина _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tstol atol atol _wtol
_ttol atol atol _wtol

Требования

Подпрограммы Обязательный заголовок
atol <stdlib.h>
_atol_l, , _wtol_wtol_l <stdlib.h> и <wchar.h>.

Пример

Эта программа показывает, как числа, хранящиеся в виде строки, можно преобразовать в числовые значения с помощью функции atol.

// crt_atol.c
// This program shows how numbers stored as
// strings can be converted to numeric values
// using the atol functions.
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>

int main( void )
{
    char    *str = NULL;
    long    value = 0;

    // An example of the atol function
    // with leading and trailing white spaces.
    str = "  -2309 ";
    value = atol( str );
    printf( "Function: atol( \"%s\" ) = %d\n", str, value );

    // Another example of the atol function
    // with an arbitrary decimal point.
    str = "314127.64";
    value = atol( str );
    printf( "Function: atol( \"%s\" ) = %d\n", str, value );

    // Another example of the atol function
    // with an overflow condition occurring.
    str = "3336402735171707160320";
    value = atol( str );
    printf( "Function: atol( \"%s\" ) = %d\n", str, value );
    if (errno == ERANGE)
    {
       printf("Overflow condition occurred.\n");
    }
}
Function: atol( "  -2309 " ) = -2309
Function: atol( "314127.64" ) = 314127
Function: atol( "3336402735171707160320" ) = 2147483647
Overflow condition occurred.

См. также

Преобразование данных
Поддержка математических и плавающих точек
Локаль
_ecvt
_fcvt
_gcvt
setlocale, _wsetlocale
_atodbl, , _atodbl_l_atoldbl_l_atoldbl_atoflt,_atoflt_l