strtol, strtoll

From cppreference.com
< c | string | byte
Defined in header <stdlib.h>
long      strtol( const char *str, char **str_end, int base );
long long strtoll( const char *str, char **str_end, int base );
(since C99)

Interprets an integer value in a byte string pointed to by str.

Function discards any whitespace characters until first non-whitespace character is found. Then it takes as many characters as possible to form a valid base-n (where n=base) integer number representation and converts them to an integer value. The valid integer value consists of the following parts:

  • (optional) plus or minus sign
  • (optional) prefix (0) indicating octal base (applies only when the base is 8)
  • (optional) prefix (0x or 0X) indicating hexadecimal base (applies only when the base is 16)
  • a sequence of digits

The set of valid digits for base-2 integer is 01, for base-3 integer is 012, and so on. For bases larger than 10, valid digits include alphabetic characters, starting from Aa for base-11 integer, to Zz for base-36 integer. The case of the characters is ignored.

The functions sets the pointer pointed to by str_end to point to the character past the last character interpreted. If str_end is NULL, it is ignored.

Contents

[edit] Parameters

str - pointer to the null-terminated byte string to be interpreted
str_end - pointer to a pointer to character.
base - base of the interpreted integer value

[edit] Return value

Integer value corresponding to the contents of str on success. If the converted value falls out of range of corresponding return type, range error occurs and LONG_MAX, LONG_MIN, LLONG_MAX or LLONG_MIN is returned. If no conversion can be performed, 0 is returned.

[edit] Example

[edit] See also

converts a byte string to an integer value
(function)
converts a byte string to an unsigned integer value
(function)