EDIT: Desculpe, eu deveria ter lembrado que esta máquina é decididamente não padrão, tendo conectado várias libc
implementações não padrão para fins acadêmicos ;-)
Como, de itoa()
fato, não é padrão, como mencionado por vários comentadores úteis, é melhor usar sprintf(target_string,"%d",source_int)
ou (melhor ainda, porque é seguro contra estouros de buffer) snprintf(target_string, size_of_target_string_in_bytes, "%d", source_int)
. Eu sei que não é tão conciso ou legal quanto itoa()
, mas pelo menos você pode Escrever Uma Vez, Executar em Todo Lugar (tm) ;-)
Aqui está a resposta antiga (editada)
Você está certo ao afirmar que o padrão gcc libc
não inclui itoa()
, como várias outras plataformas, devido ao fato de não ser tecnicamente parte do padrão. Veja aqui um pouco mais de informação. Observe que você precisa
#include <stdlib.h>
Claro que você já sabe disso, porque queria usar itoa()
no Linux depois de usá-lo em outra plataforma, mas ... o código (roubado do link acima) teria a seguinte aparência:
Exemplo
/* 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;
}
Resultado:
Enter a number: 1750
decimal: 1750
hexadecimal: 6d6
binary: 11011010110
Espero que isto ajude!
sprintf(str, "%d", num)
? é muito mais lento queitoa
?