Description
The
strtol function converts the string in \c nptr to a
long value. The
strtoll function converts the string in \c nptr to a
long long value. The
strtoimax function converts the string in \c nptr to an
intmax_t value. The
strtoq function converts the string in \c nptr to a
quad_t value. The conversion is done according to the given \c base, which must be between 2 and 36 inclusive, or be the special value 0.
The string may begin with an arbitrary amount of white space (as determined by
isspace) followed by a single optional
+ or
- sign. If \c base is zero or 16, the string may then include a
0x prefix, and the number will be read in base 16; otherwise, a zero \c base is taken as 10 (decimal) unless the next character is
0, in which case it is taken as 8 (octal).
The remainder of the string is converted to a
long,
long long,
intmax_t or
quad_t value in the obvious manner, stopping at the first character which is not a valid digit in the given base. (In bases above 10, the letter
A in either upper or lower case represents 10,
B represents 11, and so forth, with
Z representing 35.)
If \c endptr is not
NULL,
strtol stores the address of the first invalid character in \c *endptr. If there were no digits at all, however,
strtol stores the original value of \c nptr in \c *endptr. (Thus, if \c *nptr is not
\0 but \c **endptr is
\0 on return, the entire string was valid.)
Extended locale versions of these functions are documented in
strtol_l. See
xlocale for more information.
The code below shows how to use the
strtol function to convert a number from base 2 to base 10.