convert a string to an unsigned long integer


#include <stdlib.h>

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


The strtoul() function converts the string pointed to by ptr to an unsigned long. The function recognizes a string containing optional white space, an optional sign (+ or -), followed by a sequence of digits and letters. The conversion ends at the first unrecognized character. A pointer to that character will be stored in the object endptr points to, if endptr is not NULL.

If base is zero, the first characters 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 is not zero, it must have a value of 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.

If there's a leading minus sign in the string, the value is negated.


The converted value. If the correct value would cause overflow, ULONG_MAX is returned and errno is set to ERANGE. If base is out of range, zero is returned and errno is set to EDOM.

Note: This function returns an unsigned long int. If the given string starts with a minus sign, the result is a negative number that's cast to be unsigned.


#include <stdlib.h>

void main()
    unsigned long int v;

    v = strtoul( "12345678", NULL, 10 );



Interrupt handler No
Signal handler Yes, but modifies errno
Thread Yes

See also:

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