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

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)