EDITAR: Lo siento, debería haber recordado que esta máquina es decididamente no estándar, después de haber conectado varias libc
implementaciones no estándar para fines académicos ;-)
Como de itoa()
hecho no es estándar, como lo mencionaron varios comentaristas útiles, es mejor usar sprintf(target_string,"%d",source_int)
o (mejor aún, porque está a salvo de desbordamientos del búfer) snprintf(target_string, size_of_target_string_in_bytes, "%d", source_int)
. Sé que no es tan conciso o genial como itoa()
, pero al menos puedes escribir una vez, correr en todas partes (tm) ;-)
Aquí está la vieja respuesta (editada)
Tiene razón al afirmar que el valor predeterminado gcc libc
no incluye itoa()
, como muchas otras plataformas, debido a que técnicamente no forma parte del estándar. Vea aquí para un poco más de información. Tenga en cuenta que tiene que
#include <stdlib.h>
Por supuesto, ya lo sabe, porque quería usarlo itoa()
en Linux después de presumiblemente usarlo en otra plataforma, pero ... el código (robado del enlace anterior) se vería así:
Ejemplo
/* itoa example */
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i;
char buffer [33];
printf ("Enter a number: ");
scanf ("%d",&i);
itoa (i,buffer,10);
printf ("decimal: %s\n",buffer);
itoa (i,buffer,16);
printf ("hexadecimal: %s\n",buffer);
itoa (i,buffer,2);
printf ("binary: %s\n",buffer);
return 0;
}
Salida:
Enter a number: 1750
decimal: 1750
hexadecimal: 6d6
binary: 11011010110
¡Espero que esto ayude!
sprintf(str, "%d", num)
? ¿es mucho más lento queitoa
?