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.