Lenguaje C: función strtol (convertir cadena en entero largo)

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

Lenguaje C: función strtol
(convertir cadena a larga)

En el lenguaje de programación C, función strtol Convierte una cadena en un entero largo.

La función strtol omite todos los caracteres de espacio en blanco al principio de la cadena, convierte los caracteres posteriores para que formen parte de un número y se detiene en el primer carácter que no es un número.

sintaxis

La sintaxis de la función strtol en lenguaje C es:

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

parámetro o parámetro

nptr Puntero a la cadena que se va a convertir en long. Lo utiliza la función endptr strtol para indicar dónde se detiene la conversión. La función strtol modifica endptr (si endptr no es un puntero nulo) para que endptr apunte al primer carácter no convertido. base La base del número a convertir. Si la base está entre 2 y 36, se usa como base del número. Si la base es cero, se supone que el número es decimal a menos que el número convertido comience con O (octal), Ox (hexadecimal) u OX (hexadecimal).

devolver los bienes

La función strtol devuelve una representación de entero largo de una cadena. La función strtol omite todos los caracteres de espacio en blanco al principio de la cadena, convierte los caracteres posteriores para que formen parte de un número y se detiene en el primer carácter que no es un número.

Si la función strtol convierte un valor que es demasiado grande o demasiado pequeño para convertir, almacena ERANGE en errno. Si el valor es demasiado grande para convertirlo, la función devuelve un valor LONG_MAX. Si el valor es demasiado pequeño para convertir, la función devolverá un valor LONG_MIN.

titulo requerido

En C, los archivos de encabezado requeridos por la función strtol son:

#include <stdlib.h>

aplicar para

En C, la función strtol está disponible en las siguientes versiones:

  • ANSI/ISO 9899-1990

ejemplo de strtol

Veamos un ejemplo de cómo usar la función strtol en un programa C:

/* Example using strtol by TechOnTheNet.com */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <limits.h>

int main(int argc, const char * argv[])
{
    /* Define temporary variables */
    char value[10];
    char *eptr;
    long result;

    /* Copy a value into the variable */
    /* It's okay to have whitespace before the number */
    strcpy(value, " 123");

    /* Convert the provided value to a decimal long */
    result = strtol(value, &eptr, 10);

    /* If the result is 0, test for an error */
    if (result == 0)
    {
        /* If a conversion error occurred, display a message and exit */
        if (errno == EINVAL)
        {
            printf("Conversion error occurred: %dn", errno);
            exit(0);
        }
    }

    /* If the result is equal to LONG_MIN or LONG_MAX, test for a range error */
    if (result == LONG_MIN || result == LONG_MAX)
    {
        /* If the value provided was out of range, display a warning message */
        if (errno == ERANGE)
            printf("The value provided was out of rangen");
    }

    /* Display the converted result */
    printf("%ld decimaln", result);

    /* Copy a hexadecimal value into the variable */
    strcpy(value, "0x19e");

    /* Convert the provided value to a decimal long */
    result = strtol(value, &eptr, 16);

    /* If the result is 0, test for an error */
    if (result == 0)
    {
        /* If a conversion error occurred, display a message and exit */
        if (errno == EINVAL)
        {
            printf("Conversion error occurred: %dn", errno);
            exit(0);
        }
    }

    /* If the result is equal to LONG_MIN or LONG_MAX, test for a range error */
    if (result == LONG_MIN || result == LONG_MAX)
    {
        /* If the value provided was out of range, display a warning message */
        if (errno == ERANGE)
            printf("The value provided was out of rangen");
    }

    /* Display the converted result */
    printf("%lx hexadecimaln", result);

    return 0;
}

Cuando se compila y ejecuta, esta aplicación generará:

123 decimal
19e hexadecimal

Función similar

Otras funciones de C similares a la función strtol:

  • funcion atoi
  • función de atolón
  • función strtod
  • función strtoll
  • función strtoul

ver también

Otras funciones de C que vale la pena mencionar cuando se trata de funciones strtol:

  • función atof
(Visited 7 times, 1 visits today)