EDIT: Mi dispiace, avrei dovuto ricordare che questa macchina è decisamente non standard, avendo collegato vari non standard libc
implementazioni per scopi accademici ;-)
Dato che in itoa()
effetti non è standard, come indicato da numerosi utili commentatori, è meglio utilizzarlo sprintf(target_string,"%d",source_int)
o (meglio ancora, perché è al sicuro da buffer overflow) snprintf(target_string, size_of_target_string_in_bytes, "%d", source_int)
. So che non è così conciso o bello come itoa()
, ma almeno puoi scrivere una volta, corri ovunque (tm) ;-)
Ecco la vecchia risposta (modificata)
Hai ragione nel dichiarare che il default gcc libc
non include itoa()
, come molte altre piattaforme, perché tecnicamente non fa parte dello standard. Vedi qui per qualche informazione in più. Nota che devi
#include <stdlib.h>
Ovviamente lo sai già, perché volevi usare itoa()
su Linux dopo aver presumibilmente usato su un'altra piattaforma, ma ... il codice (rubato dal link sopra) sarebbe simile a:
Esempio
/* 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;
}
Produzione:
Enter a number: 1750
decimal: 1750
hexadecimal: 6d6
binary: 11011010110
Spero che questo ti aiuti!
sprintf(str, "%d", num)
? è molto più lento diitoa
?