¿Cómo puedo convertir un int en una cadena en C?
¿ Cómo se convierte un int
(entero) en una cadena?
Estoy intentando crear una función que convierta los datos de a struct
en una cadena para guardarla en un archivo.
Puedes usar sprintf
para hacerlo, o tal vez snprintf
si lo tienes:
char str[ENOUGH];
sprintf(str, "%d", 42);
Donde el número de caracteres (más el carácter final) en se str
puede calcular usando:
(int)((ceil(log10(num))+1)*sizeof(char))
Como se señaló en un comentario, itoa()
no es un estándar, así que es mejor utilizar el enfoque sprintf() sugerido en la respuesta rival.
Puede utilizar la itoa()
función para convertir su valor entero en una cadena.
Aquí hay un ejemplo:
int num = 321;
char snum[5];
// Convert 123 to string [buf]
itoa(num, snum, 10);
// Print our string
printf("%s\n", snum);
Si desea generar su estructura en un archivo, no es necesario convertir ningún valor de antemano. Puede usar la especificación de formato printf para indicar cómo generar sus valores y usar cualquiera de los operadores de la familia printf para generar sus datos.
La respuesta corta es:
snprintf( str, size, "%d", x );
Cuanto más largo es: primero debes encontrar el tamaño suficiente. snprintf
te dice la longitud si lo llamas con NULL, 0
los primeros parámetros:
snprintf( NULL, 0, "%d", x );
Asigne un carácter más para el terminador nulo.
#include <stdio.h>
#include <stdlib.h>
int x = -42;
int length = snprintf( NULL, 0, "%d", x );
char* str = malloc( length + 1 );
snprintf( str, length + 1, "%d", x );
...
free(str);
Si funciona para todos los formatos de cadena, puede convertir float o double en cadena usando "%g"
, puede convertir int a hexadecimal usando "%x"
, y así sucesivamente.