STRTOL(3C)              Standard C Library Functions              STRTOL(3C)
NAME
       strtol, strtoll, atol, atoll, atoi, lltostr, ulltostr - string
       conversion routines
SYNOPSIS
       #include <stdlib.h>       
long strtol(
const char *restrict str, 
char **restrict endptr, 
int base);       
long long strtoll(
const char *restrict str, 
char **restrict endptr,            
int base);       
long atol(
const char *str);       
long long atoll(
const char *str);       
int atoi(
const char *str);       
char *lltostr(
long long value, 
char *endptr);       
char *ulltostr(
unsigned long long value, 
char *endptr);
DESCRIPTION
   strtol() and 
strtoll()       The 
strtol() function converts the initial portion of the string
       pointed to by 
str to a type 
long int representation.
       The 
strtoll() function converts the initial portion of the string
       pointed to by 
str to a type 
long long representation.
       Both functions first decompose the input string into three parts: an
       initial, possibly empty, sequence of white-space characters (as
       specified by 
isspace(3C)); a subject sequence interpreted as an
       integer represented in some radix determined by the value of 
base;
       and a final string of one or more unrecognized characters, including
       the terminating null byte of the input string. They then attempt to
       convert the subject sequence to an integer and return the result.
       If the value of 
base is 0, the expected form of the subject sequence
       is that of a decimal constant, octal constant or hexadecimal
       constant, any of which may be preceded by a + or - sign. A decimal
       constant begins with a non-zero digit, and consists of a sequence of
       decimal digits. An octal constant consists of the prefix 0 optionally
       followed by a sequence of the digits 0 to 7 only. A hexadecimal
       constant consists of the prefix 0x or 0X followed by a sequence of
       the decimal digits and letters a (or A) to f (or F) with values 10 to
       15 respectively.
       If the value of 
base is between 2 and 36, the expected form of the
       subject sequence is a sequence of letters and digits representing an
       integer with the radix specified by 
base, optionally preceded by a +
       or - sign. The letters from a (or A) to z (or Z) inclusive are
       ascribed the values 10 to 35; only letters whose ascribed values are
       less than that of 
base are permitted. If the value of 
base is 16, the
       characters 0x or 0X may optionally precede the sequence of letters
       and digits, following the sign if present.
       The subject sequence is defined as the longest initial subsequence of
       the input string, starting with the first non-white-space character,
       that is of the expected form. The subject sequence contains no
       characters if the input string is empty or consists entirely of
       white-space characters, or if the first non-white-space character is
       other than a sign or a permissible letter or digit.
       If the subject sequence has the expected form and the value of 
base       is 0, the sequence of characters starting with the first digit is
       interpreted as an integer constant. If the subject sequence has the
       expected form and the value of 
base is between 2 and 36, it is used
       as the base for conversion, ascribing to each letter its value as
       given above. If the subject sequence begins with a minus sign, the
       value resulting from the conversion is negated. A pointer to the
       final string is stored in the object pointed to by 
endptr, provided
       that 
endptr is not a null pointer.
       In other than the POSIX locale, additional implementation-dependent
       subject sequence forms may be accepted.
       If the subject sequence is empty or does not have the expected form,
       no conversion is performed; the value of 
str is stored in the object
       pointed to by 
endptr, provided that 
endptr is not a null pointer.   
atol(), 
atoll() and 
atoi()       Except for behavior on error, 
atol() is equivalent to: 
strtol(str,       (char **)NULL, 10).
       Except for behavior on error, 
atoll() is equivalent to: 
strtoll(str,       (char **)NULL, 10).
       Except for behavior on error, 
atoi() is equivalent to: 
(int)       strtol(str, (char **)NULL, 10).
       If the value cannot be represented, the behavior is undefined.   
lltostr() and 
ulltostr()       The 
lltostr() function returns a pointer to the string represented by
       the 
long long value. The 
endptr argument is assumed to point to the
       byte following a storage area into which the decimal representation
       of 
value is to be placed as a string.  The 
lltostr() function
       converts 
value to decimal and produces the string,  and returns a
       pointer to the beginning of the string. No leading zeros are
       produced, and no terminating null is produced. The low-order digit of
       the result always occupies memory position  
endptr-1. The behavior of       
lltostr() is undefined if  
value is negative.  A single zero digit is
       produced if 
value is 0.
       The 
ulltostr() function is similar to 
lltostr() except that 
value is
       an 
unsigned long long.
RETURN VALUES
       Upon successful completion, 
strtol(), 
strtoll(), 
atol(), 
atoll(), and       
atoi() return the converted value, if any. If no conversion could be
       performed, 
strtol() and 
strtoll() return 
0 and 
errno may be set to       
EINVAL.
       If the correct value is outside the range of representable values,       
strtol() returns 
LONG_MAX or 
LONG_MIN and 
strtoll() returns 
LLONG_MAX       or 
LLONG_MIN (according to the sign of the value), and 
errno is set
       to 
ERANGE.
       Upon successful completion, 
lltostr() and 
ulltostr() return a pointer
       to the converted string.
ERRORS
       The 
strtol() and 
strtoll() functions will fail if:       
ERANGE                 The value to be returned is not representable. The 
strtol()                 and 
strtoll() functions may fail if:       
EINVAL                 The value of 
base is not supported.
USAGE
       Because 0, 
LONG_MIN, 
LONG_MAX, 
LLONG_MIN, and 
LLONG_MAX are returned
       on error and are also valid returns on success, an application
       wishing to check for error situations should set 
errno to 0, call the
       function, then check 
errno and if it is non-zero, assume an error has
       occurred.
       The 
strtol() function no longer accepts values greater than 
LONG_MAX       or 
LLONG_MAX as valid input. Use 
strtoul(3C) instead.
       Calls to 
atoi() and 
atol() might be faster than corresponding calls
       to 
strtol(), and calls to 
atoll() might be faster than corresponding
       calls to 
strtoll(). However, applications should not use the 
atoi(),       
atol(), or 
atoll() functions unless they know the value represented
       by the argument will be in range for the corresponding result type.
ATTRIBUTES
       See 
attributes(7) for descriptions of the following attributes:
       +--------------------+-----------------+
       |  ATTRIBUTE TYPE    | ATTRIBUTE VALUE |
       +--------------------+-----------------+
       |Interface Stability | See below.      |
       +--------------------+-----------------+
       |MT-Level            | MT-Safe         |
       +--------------------+-----------------+
       The 
strtol(), 
strtoll(), 
atol(), 
atoll(), and 
atoi() functions are
       Standard.
SEE ALSO
       isalpha(3C), 
isspace(3C), 
scanf(3C), 
strtod(3C), 
strtoul(3C),       
attributes(7), 
standards(7)                                 May 6, 2003                      STRTOL(3C)