J'ai essayé cet exemple:
/* 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;
}
mais l'exemple il ne fonctionne pas (il dit que la fonction itoa
n'existe pas).
Utilisez sprintf()
:
int someInt = 368;
char str[12];
sprintf(str, "%d", someInt);
Tous les nombres pouvant être représentés par int
s'intègreront dans un tableau de 12 caractères sans débordement, sauf si votre compilateur utilise plus de 32 bits pour int
. Lorsque vous utilisez des nombres de plus grande taille, par ex. long
avec la plupart des compilateurs 64 bits, vous devez augmenter la taille du tableau, d'au moins 21 caractères pour les types 64 bits.
Faire votre propre itoa
est également facile, essayez ceci:
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;
}
ou utilisez la fonction standard sprintf()
.
C'est parce que itoa
n'est pas une fonction standard. Essayez snprintf
à la place.
char str[LEN];
snprintf(str, LEN, "%d", 42);