Parses the C string
str interpreting its content as an unsigned integral number of the specified
base, which is returned as an
unsigned long int value.
The function first discards as many whitespace characters as necessary until the first non-whitespace character is found. Then, starting from this character, takes as many characters as possible that are valid following a syntax that depends on the
base parameter, and interprets them as a numerical value. Finally, a pointer to the first character following the integer representation in
str is stored in the object pointed by
endptr.
If the value of
base is zero, the syntax expected is similar to that of integer constants, which is formed by a succession of:
- An optional prefix indicating octal or hexadecimal base ("0" or "0x" respectively)
- A sequence of decimal digits (if no base prefix was specified) or either octal or hexadecimal digits if a specific prefix is present
If the
base value is between 2 and 36, the format expected for the integral number is a succession of the valid digits and/or letters needed to represent integers of the specified radix (starting from
'0' and up to
'z'/
'Z' for radix 36). If the
base is 16, the sequence may optionally be preceded by
"0x" or
"0X", which is ignored.
If the first sequence of non-whitespace characters in
str is not a valid integral number as defined above, or if no such sequence exists because either
str is empty or it contains only whitespace characters, no conversion is performed.
Parameters
- str
- C string containing the representation of an unsigned integral number.
- endptr
- Reference to an object of type char*, whose value is set by the function to the next character in str after the numerical value.
This parameter can also be a null pointer, in which case it is not used.
Return Value
On success, the function returns the converted integral number as a
long int value.
If no valid conversion could be performed, a zero value is returned.
If the correct value is out of the range of representable values,
ULONG_MAX is returned, an the global variable
errno is set to
ERANGE.
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
/* strtoul example */
#include <stdio.h>
#include <stdlib.h>
int main ()
{
char szInput [256];
unsigned long ul;
printf ("Enter an unsigned number: ");
fgets (szInput,256,stdin);
ul = strtoul (szInput,NULL,0);
printf ("Value entered: %lu. Its double: %lu\n",ul,ul*2);
return 0;
}
|
For an example with the
endptr parameter in action see
strtol.
See also
atol |
Convert string to long integer (function) |
strtol |
Convert string to long integer (function) |
strtod |
Convert string to double (function) |