EDIT: Désolé, j'aurais dû me rappeler que cette machine est décidément non standard, après avoir branché diverses libc
implémentations non standard à des fins académiques ;-)
Comme il itoa()
est en effet non standard, comme mentionné par plusieurs commentateurs utiles, il est préférable d'utiliser sprintf(target_string,"%d",source_int)
ou (mieux encore, car il est à l'abri des débordements de tampon) snprintf(target_string, size_of_target_string_in_bytes, "%d", source_int)
. Je sais que ce n'est pas aussi concis ou cool que itoa()
, mais au moins vous pouvez écrire une fois, exécuter partout (tm) ;-)
Voici l'ancienne réponse (modifiée)
Vous avez raison de dire que la valeur par défaut gcc libc
n'inclut pas itoa()
, comme plusieurs autres plates-formes, car elle ne fait pas techniquement partie de la norme. Voir ici pour un peu plus d'informations. Notez que vous devez
#include <stdlib.h>
Bien sûr, vous le savez déjà, car vous vouliez l' utiliser itoa()
sous Linux après l'avoir probablement utilisé sur une autre plate-forme, mais ... le code (volé à partir du lien ci-dessus) ressemblerait à:
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;
}
Production:
Enter a number: 1750
decimal: 1750
hexadecimal: 6d6
binary: 11011010110
J'espère que cela t'aides!
sprintf(str, "%d", num)
? est-ce beaucoup plus lent queitoa
?