strtol

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



NOMBRE
       strtol, strtoll, strtoq - convierten una cadena en un entero de tipo long

SINOPSIS
       #include <stdlib.h>

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

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

DESCRIPCIÓN
       La función strtol() convierte la parte inicial de la cadena de entrada
       nptr en un valor entero de tipo long de acuerdo a la base dada, que debe
       estar entre 2 y 36 ambos incluidos o ser el valor especial 0.

       La cadena debe comenzar con una cantidad arbitraria de espacios en
       blanco, (tal y como los define la función isspace(3)) seguida por un
       único y opcional signo `+' o `-'.  Si la base is 0 o 16, la cadena puede
       incluir el prefijo `0x', y el número será interpretado en base 16, en
       caso contrario la base cero se toma como base 10 (decimal), a menos que
       el carácter siguiente sea `0', en cuyo caso se toma como base 8 (octal).

       El resto de la cadena se convierte en un entero de tipo long de una forma
       evidente, parándose la conversión en el primer carácter que no es un
       dígito válido en la base dada.  (En bases superiores a 10, la letra `A'
       en mayúsculas o minúsculas representa el 10, `B' representa el 11, y así
       sucesivamente, con la `Z' representando el 35.)

       Si endptr no es NULL, strtol() almacena la dirección del primer carácter
       no válido en *endptr.  Si no hubiera dígitos en toda la cadena strtol()
       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 strtoll() hace el mismo trabajo que la función strtol() pero
       devuelve un valor entero de tipo long long.

VALOR DEVUELTO
       La función strtol() devuelve el resultado de la conversión, a menos que
       el valor se desbordara por arriba o por abajo.  Si ocurriera un
       desbordamiento inferior, strtol() devuelve LONG_MIN.  Si ocurriera un
       desbordamiento superior, strtol() devuelve LONG_MAX.  En ambos casos,
       errno se establece a ERANGE.  Precisamente lo mismo se aplica a strtoll()
       (con LLONG_MIN y LLONG_MAX en lugar de LONG_MIN y LONG_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

           quad_t
           strtoq(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 strtoll()
       o a strtol().

CONFORME A
       strtol() es conforme con SVID 3, BSD 4.3, ISO 9899 (C99) y POSIX, y
       strtoll() es conforme con ISO 9899 (C99) y POSIX-2001.

VÉASE TAMBIÉN
       atof(3), atoi(3), atol(3), strtod(3), strtoul(3)




GNU                               30 mayo 2002                         STRTOL(3)