Come convertire intero in stringa in C?

Ho provato questo esempio:

/* itoa example */ #include  #include  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; } 

ma l’esempio non funziona (dice che la funzione itoa non esiste).

Usa sprintf() :

 int someInt = 368; char str[12]; sprintf(str, "%d", someInt); 

Tutti i numeri rappresentabili da int si inseriscono in un array di 12 caratteri senza overflow, a meno che il compilatore non stia utilizzando in qualche modo più di 32 bit per int . Quando si utilizzano numeri con bit di bit maggiore, ad esempio long con la maggior parte dei compilatori a 64 bit, è necessario aumentare la dimensione dell’array, almeno 21 caratteri per i tipi a 64 bit.

Anche itoa tuo itoa è semplice, prova questo:

 char* itoa(int i, char b[]){ char const digit[] = "0123456789"; char* p = b; if(i<0){ *p++ = '-'; i *= -1; } int shifter = i; do{ //Move to where representation ends ++p; shifter = shifter/10; }while(shifter); *p = '\0'; do{ //Move back, inserting digits as u go *--p = digit[i%10]; i = i/10; }while(i); return b; } 

o utilizzare la funzione standard sprintf() .

Questo perché itoa non è una funzione standard. Prova invece a snprintf .

 char str[LEN]; snprintf(str, LEN, "%d", 42);