# strtoq

## Name

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

## Synopsis

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

```
quadt
strtoq
```

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

## Description

`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.

## Errors

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