[Previous] [Contents] [Next]

strtol(), strtoll()

Convert a string to a long integer

Synopsis:

#include <stdlib.h>

long int strtol( const char * ptr,
                 char ** endptr,
                 int base );

int64_t strtoll( const char * nptr,
                 char ** endptr,
                 int base );

Library:

libc

Description:

The strtol() function converts the string pointed to by ptr to an object of type long int; strtoll() converts the string pointed to by nptr to an object of type int64_t (long long).

Strings containing the following are recognized:

The conversion ends at the first unrecognized character. If endptr isn't NULL, a pointer to the unrecognized character is stored in the object endptr points to.

If base is zero, the first characters after the optional sign determine the base used for the conversion. If the first characters are 0x or 0X the digits are treated as hexadecimal. If the first character is 0, the digits are treated as octal. Otherwise, the digits are treated as decimal.

If base isn't zero, it must have a value between 2 and 36. The letters a-z and A-Z represent the values 10 through 35. Only those letters whose designated values are less than base are permitted. If the value of base is 16, the characters 0x or 0X may optionally precede the sequence of letters and digits.

Returns:

The converted value.

If the correct value causes an overflow, LONG_MAX|LONGLONG_MAX or LONG_MIN|LONGLONG_MIN is returned according to the sign, and errno is set to ERANGE. If base is out of range, zero is returned and errno is set to EDOM.

Examples:

#include <stdlib.h>

int main( void )
  {
    long int v;

    v = strtol( "12345678", NULL, 10 );
    return EXIT_SUCCESS;
  }

Classification:

strtol() is ANSI; strtoll() is Unix

Safety:
Cancellation point No
Interrupt handler Yes
Signal handler Yes
Thread Yes

See also:

atoi(), atol(), errno, itoa(), ltoa(), sscanf(), strtoul(), ultoa(), utoa()


[Previous] [Contents] [Next]