strtoul

STRTOUL(3)               Manual del Programador de Linux              STRTOUL(3)



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)