strtoul function(Convert String to Unsigned Long Integer) in C Language – example and detail

In the C Programming Language, the strtoul feature converts a string to an unsigned long integer.

The strtoul feature skips all white-space characters at the opening of the string, converts the subsequent characters as phase of the number, and then stops when it encounters the first personality that is not a number.

Syntax

The syntax for the strtoul feature in the C Language is:

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

Parameters or Arguments

nptr A pointer to a string to convert to an unsigned long integer. endptr It is used by way of the strtoul characteristic to indicate where the conversion stopped. The strtoul function will regulate endptr (if endptr is now not a null pointer) so that endptr points to the first personality that was once no longer converted. base The base of the quantity being converted. If base is between 2 and 36, it is used as the radix of the number. If base is zero, the wide variety is assumed to be decimal unless the converted quantity begins with O (for Octal), Ox (for hex) or OX (for hex).

Returns

The strtoul feature returns the unsigned long integer representation of a string. The strtoul characteristic skips all white-space characters at the opening of the string, converts the subsequent characters as part of the number, and then stops when it encounters the first persona that is not a number.

If the strtoul function converts a fee that is too large or too small to convert, it will keep ERANGE in errono.

Required Header

In the C Language, the required header for the strtoul characteristic is:

#include <stdlib.h>

Applies To

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

ANSI/ISO 9899-1990

strtoul Example

Let’s appear at an instance to see how you would use the strtoul characteristic in a C program:

/* Example using strtoul by TechOnTheNet.com */

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

int main(int argc, const char * argv[])
{
    /* Define temporary variables */
    char value[10];
    char *eptr;
    unsigned 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 unsigned long */
    result = strtoul(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 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("%lu decimal\n", result);

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

    /* Convert the provided value to a hexadecimal unsigned long */
    result = strtoul(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 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("%lx hexadecimal\n", result);

    return 0;
}

When compiled and run, this software will output:

234 decimal
5d9 hexadecimal

Similar Functions

Other C functions that are similar to the strtoul function:

atoi feature atol characteristic strtod characteristic strtol characteristic

See Also

Other C features that are noteworthy when dealing with the strtoul function:

atof function <stdlib.h>