Provided by: manpages-es_1.55-10_all bug

NOMBRE

       strtoul, strtoull, strtouq - convierten una cadena en un entero largo sin signo

SINOPSIS

       #include <stdlib.h>

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

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

DESCRIPCIÓN

       La  función  strtoul() convierte la parte inicial de la cadena nptr en un valor entero largo sin signo de
       acuerdo con la base dada, la cual debe estar entre 2 y 36 inclusive, o ser el valor especial 0.

       La cadena debe comenzar con una cantidad arbitraria de espacios en blanco (determinado por isspace(3))  y
       seguida  por un opcional y único signo `+' o `-'.  Si base es cero o 16, la cadena puede entonces incluir
       un prefijo `0x' , y el número se leerá en base 16; en caso contrario, una  base  cero  se  toma  como  10
       (decimal) a menos que el siguiente caracter sea `0', en cuyo caso se toma como 8 (octal).

       El resto de la cadena se convierte en un valor entero largo sin signo de la manera obvia, deteniéndose en
       el  primer caracter que no sea un dígito válido en la base dada. (En bases por encima de 10, la letra `A'
       mayúscula o minúscula representa 10, `B' representa 11, y así en adelante, con `Z' representando 35).

       Si endptr no es NULL, strtoul() almacena la dirección del primer caracter no válido  en  *endptr.  Si  no
       hubiera dígitos en absoluto strtoul() almacena el valor original de nptr en *endptr.  (y devuelve 0).  En
       particular, si *nptr es distinto de `\0' pero **endptr es `\0' a la vuelta, la cadena entera es válida.

       La  función  strtoull()  hace  el mismo trabajo que la función strtoul() pero devuelve un valor entero de
       tipo long long.

VALOR DEVUELTO

       La función strtoul() devuelve o el resultado de la conversión o, si hubiera un signo  menos  delante,  la
       negación  del  resultado  de  la  conversión,  a  menos  que  el  valor  original  (no-negado) se hubiera
       sobrepasado; en tal caso, strtoul() devuelve ULONG_MAX y  asigna  ERANGE  a  la  variable  global  errno.
       Precisamente lo mismo se aplica a strtoull() (con ULLONG_MAX en lugar de ULONG_MAX).

ERRORES

       ERANGE El valor resultante está fuera de rango.

       EINVAL (no está en C99) La base dada contiene un valor no soportado.

       La  implementación puede poner también errno a EINVAL en caso de que no se realice ninguna conversión (no
       se encuentren dígitos, y se devuelva 0).

OBSERVACIONES

       En otras localizaciones distintas a la localización "C", se pueden aceptar también otras  cadenas.   (Por
       ejemplo, el separador de miles de la localización actual puede estar soportado.)

       BSD tiene también la función

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

       con  una  definición completamente análoga.  Dependiendo del tamaño de palabra de la arquitectura actual,
       ésta puede ser equivalente a strtoull() o a strtoul().

CONFORME A

       strtoul() es conforme con SVID 3, BSD 4.3, ISO 9899 (C99) y POSIX, y strtoull() es conforme con ISO  9899
       (C99) y POSIX-2001.

VÉASE TAMBIÉN

       atof(3), atoi(3), atol(3), strtod(3), strtol(3)

GNU                                               30 mayo 2002                                        STRTOUL(3)