Pasar un valor int, float o double a una cadena char* en C/C++

En este artículo vamos a ver formas de cómo pasar un valor entero o decimal (int, float, double) a una cadena del tipo char* o char[] en los lenguajes de C y C++.

Usando sprintf() en C y C++

La función sprintf() sirve para imprimir datos a una cadena de caracteres (string). Esta función es muy parecida a printf() que se usa para imprimir texto en pantalla, pero sprintf() puede imprimir a una cadena tipo char* o char[]. El primer argumento de sprintf() es la cadena a donde vamos a imprimir los valores.

Ejemplo:

#include <stdio.h>

int main(void)
{
   int valor_entero = 123;
   float valor_decimal = 3.1416;

   // Cadenas en donde vamos a almacenar los valores
   char cadena_entero[100];
   char cadena_decimal[100];

   // Convertir el valor entero y almacenarlo en "cadena_entero"
   sprintf(cadena_entero, "%i", valor_entero);

   // Convertir el valor decimal y almacenarlo en "cadena_decimal"
   sprintf(cadena_decimal, "%f", valor_decimal);

   // Se imprimen las cadenas
   printf("Entero: %s", cadena_entero);
   printf("Decimal: %s", cadena_decimal);

   return 0;
}

Resultado:

Entero: 123
Decimal: 3.1416

Usando snprintf() en C y C++

Dependiendo de qué tan reciente sea el compilador, también es posible usar snprintf() en vez de sprintf() para especificar el número de caracteres máximo que se puede usar en la cadena. Los argumentos son casi los mismos, pero en el segundo se tiene que especificar la cantidad de caracteres reservados para la cadena, seguido de los argumentos para el formato y la variable que almacena el número.

Ejemplo:

#include <stdio.h>

int main(void)
{
   ...

   // Convertir el valor entero y almacenarlo en "cadena_entero"
   snprintf(cadena_entero, 100, "%i", valor_entero);

   // Convertir el valor decimal y almacenarlo en "cadena_decimal"
   snprintf(cadena_decimal, 100, "%f", valor_decimal);

   ...
}

Tanto sprintf() como snprintf() son funciones definidas en la biblioteca <stdio.h>.

1 Reply to “Pasar un valor int, float o double a una cadena char* en C/C++”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *