totn C Functions

C Language: strtoll function
(Convert String to Long Long)

In the C Programming Language, the strtoll function converts a string to a long long.

The strtoll function skips all white-space characters at the beginning of the string, converts the subsequent characters as part of the number, and then stops when it encounters the first character that isn't a number.

Syntax

The syntax for the strtoll function in the C Language is:

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

Parameters or Arguments

nptr
A pointer to a string to convert to a long integer.
endptr
It is used by the strtoll function to indicate where the conversion stopped. The strtoll function will modify endptr (if endptr is not a null pointer) so that endptr points to the first character that was not converted.
base
It is the base of the number being converted. If base is between 2 and 36, it is used as the radix of the number. If base is zero, the number is assumed to be decimal unless the converted number starts with O (for Octal), Ox (for hex) or OX (for hex).

Returns

The strtoll function returns the long long representation of a string. The strtoll function skips all white-space characters at the beginning of the string, converts the subsequent characters as part of the number, and then stops when it encounters the first character that isn't a number.

If the strtoll function converts a value that is too large or too small to convert, it will store ERANGE in errono. If the value is too large to convert, the function will return a value of LLONG_MAX. If the value is too small to convert the function will return a value of LLONG_MIN.

Required Header

In the C Language, the required header for the strtoll function is:

#include <stdlib.h>

Applies To

In the C Language, the strtoll function can be used in the following versions:

  • ANSI/ISO 9899-1990

strtoll Example

Let's look at an example to see how you would use the strtoll function in a C program:

/* Example using strtoll by TechOnTheNet.com */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <limits.h>

int main(int argc, const char * argv[])
{
    /* Define temporary variables */
    char value[10];
    char *eptr;
    long long result;

    /* Copy a value into the variable */
    /* It's okay to have whitespace before the number */
    strcpy(value, " 234");

    /* Convert the provided value to a decimal long long */
    result = strtoll(value, &eptr, 10);

    /* If the result is 0, test for an error */
    if (result == 0)
    {
        /* If a conversion error occurred, display a message and exit */
        if (errno == EINVAL)
        {
            printf("Conversion error occurred: %d\n", errno);
            exit(0);
        }
    }

    /* If the result is equal to LLONG_MIN or LLONG_MAX, test for a range error */
    if (result == LLONG_MIN || result == LLONG_MAX)
    {
        /* If the value provided was out of range, display a warning message */
        if (errno == ERANGE)
            printf("The value provided was out of range\n");
    }

    /* Display the converted result */
    printf("%lld decimal\n", result);

    /* Copy a hexadecimal value into the variable */
    strcpy(value, "0x2af");

    /* Convert the provided value to a decimal long long */
    result = strtoll(value, &eptr, 16);

    /* If the result is 0, test for an error */
    if (result == 0)
    {
        /* If a conversion error occurred, display a message and exit */
        if (errno == EINVAL)
        {
            printf("Conversion error occurred: %d\n", errno);
            exit(0);
        }
    }

    /* If the result is equal to LLONG_MIN or LLONG_MAX, test for a range error */
    if (result == LLONG_MIN || result == LLONG_MAX)
    {
        /* If the value provided was out of range, display a warning message */
        if (errno == ERANGE)
            printf("The value provided was out of range\n");
    }

    /* Display the converted result */
    printf("%llx hexadecimal\n", result);

    return 0;
}

When compiled and run, this application will output:

234 decimal
2af hexadecimal

Similar Functions

Other C functions that are similar to the strtoll function:

See Also

Other C functions that are noteworthy when dealing with the strtoll function: