En este post vas a aprender a convertir una cadena a un entero en C; es decir, convertir un string
a un int
o long
; de manera que puedas usarlo como entero y no como cadena.
Para la conversión vamos a usar la función strtol. Si quieres hacer el proceso inverso, por favor mira cómo convertir un número a cadena en C.
Convertir cadena a entero en C
Lo único que necesitamos es invocar a la función strtol
; la misma devolverá un long
que podría ser convertido a int
. El ejemplo más sencillo es el siguiente:
char *cadena = "2052";
int entero = (int) strtol(cadena, NULL, 10);
Los argumentos que toma strtol son, en orden:
- La cadena que vamos a convertir
- Un puntero que apuntará al lugar en donde la cadena hasta donde terminó de hacer la conversión, esto no es necesario así que lo dejamos en NULL.
- La base, que es base 10, decimal
La función devolverá un long
que convertimos a un int
.
Ejemplo completo
El código queda así:
/**
* Convertir cadena a número en C
* @date 2019-12-21
* @author parzibyte
* @see https://parzibyte.me/blog
* */
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char *cadena = "2052";
int entero = (int) strtol(cadena, NULL, 10);
printf("Entero: %d. Entero + 1: %d", entero, entero + 1);
}
Estoy imprimiendo el número y sumando uno para que se note que realmente es un entero.
En mi blog puedes explorar más ejercicios de C.