strtoimax, strtoumax - cppreference.com

##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# strtoimax, strtoumax

From cppreference.com
< c‎ | string‎ | byte

Defined in header `<inttypes.h>` |  |
intmax_t strtoimax( const char *restrict nptr, char **restrict endptr, int base ); |  | (since C99)
uintmax_t strtoumax( const char *restrict nptr, char **restrict endptr, int base ); |  | (since C99)

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

Function discards any whitespace characters (as identified by calling `isspace()`) 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 or ​0​)
- (optional) prefix (`0x` or `0X`) indicating hexadecimal base (applies only when the base is 16 or ​0​)
- 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.

Additional numeric formats may be accepted by the currently installed C locale.

If the value of base is ​0​, the numeric base is auto-detected: if the prefix is `0`, the base is octal, if the prefix is `0x` or `0X`, the base is hexadecimal, otherwise the base is decimal.

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

If the `nptr` is empty or does not have the expected form, no conversion is performed, and (if `enptr` is not NULL) the value of `nptr` is stored in the object pointed to by `endptr`.

### [edit] Parameters

nptr | - | pointer to the null-terminated byte string to be interpreted
endptr | - | pointer to a pointer to character.
base | - | base of the interpreted integer value

### [edit] Return value

- If successful, an integer value corresponding to the contents of `str` is returned.
- If the converted value falls out of range of corresponding return type, a range error occurs (setting [[cpp/error/errno|errno]] to ERANGE) and INTMAX_MAX, INTMAX_MIN, UINTMAX_MAX or ​0​ is returned, as appropriate.
- If no conversion can be performed, ​0​ is returned.

### [edit] Example

Run this code

    #include <stdio.h>
    #include <inttypes.h>
    #include <errno.h>
    #include <string.h>

    int main(void)
    {

        char* endptr;

        printf("%ld\n", strtoimax(" -123junk",&endptr,10)); /* base 10                    */
        printf("%ld\n", strtoimax("11111111",&endptr,2));   /* base 2                     */
        printf("%ld\n", strtoimax("XyZ",&endptr,36));       /* base 36                    */
        printf("%ld\n", strtoimax("010",&endptr,0));        /* octal auto-detection       */
        printf("%ld\n", strtoimax("10",&endptr,0));         /* decimal auto-detection     */
        printf("%ld\n", strtoimax("0x10",&endptr,0));       /* hexadecimal auto-detection */

        /* range error             */
        /* LONG_MAX+1 --> LONG_MAX */
        errno = 0;
        printf("%ld\n", strtoimax("9223372036854775808",&endptr,10));
        printf("%s\n", strerror(errno));

        return 0;
    }

Output:

    -123
    255
    44027
    8
    10
    16
    9223372036854775807
    Numerical result out of range

### [edit] See also

wcstoimaxwcstoumax (C99)(C99) | converts a wide string to intmax_t or uintmax_t (function) [edit]
strtolstrtoll | converts a byte string to an integer value (function) [edit]
strtoul strtoull | converts a byte string to an unsigned integer value (function) [edit]
C++ documentation for strtoimax, strtoumax

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=c/string/byte/strtoimax&oldid=69639"