Provided by:

manpages-pt-dev_20040726-4_all **NAME**

strtol - convert a string to a long integer.

**SYNOPSIS**

**#include** **<stdlib.h>**
**long** **int** **strtol(const** **char** *****__nptr__**,** **char** ******__endptr__**,** **int** __base__**);**

**DESCRIPTION**

The **strtol()** function converts the string in __nptr__ to a long integer
value according to the given __base__, which must be between 2 and 36
inclusive, or be the special value 0.
The string must begin with an arbitrary amount of white space (as
determined by **isspace**(3)) followed by a single optional `+' or `-'
sign. If __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 __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 int 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 __endptr__ is not NULL, **strtol()** stores the address of the first invalid
character in __*endptr__. If there were no digits at all, **strtol()** stores
the original value of __nptr__ in __*endptr__. (Thus, if __*nptr__ is not `\0' but
__**endptr__ is `\0' on return, the entire string is valid.)

**RETURN** **VALUE**

The **strtol()** function returns the result of the conversion, unless the
value would underflow or overflow. If an underflow occurs, **strtol()**
returns LONG_MIN. If an overflow occurs, **strtol()** returns LONG_MAX.
In both cases, __errno__ is set to ERANGE.

**ERRORS**

**ERANGE** The given string was out of range; the value converted has been
clamped.

**CONFORMING** **TO**

SVID 3, BSD 4.3, ISO 9899

**SEE** **ALSO**

**atof**(3), **atoi**(3), **atol**(3), **strtod**(3), **strtoul**(3)

**BUGS**

Ignores the current locale.