strtoq -- convert string value to a long or quad_t integer


#include <sys/types.h>
#include <stdlib.h>
#include <limits.h>

quadt strtoq(const char *nptr, char **endptr, int base);


strtoq converts the string nptr to a quadt value. The conversion is done according to the given base, which must be between 2 and 36 inclusive, or be the special value 0.

nptr may begin with an arbitrary amount of white space (as determined by isspace(3)), followed by a single optional + or - sign character. If base is 0 or 16, the string may then include a 0x prefix, and the number will be read in base 16; otherwise, a 0 base is taken as 10 (decimal), unless the next character is 0, in which case it is taken as 8 (octal).

The remainder of the string is converted to a long value in the obvious manner, stopping at the first character which is not a valid digit in the given base. (In bases above 10, the letter A in either upper or lower case represents 10, B represents 11, and so forth, with Z representing 35.)

Return Value

strtoq returns the result of the conversion, unless the value would underflow or overflow. If an underflow occurs, strtoq returns QUAD_MIN. If an overflow occurs, strtoq returns QUAD_MAX. In both cases, the global variable errno is set to ERANGE.



The given string was out of range; the value converted has been clamped.