EDYCJA: Przepraszam, powinienem był pamiętać, że ta maszyna jest zdecydowanie niestandardowa, po podłączeniu różnych niestandardowych libc
implementacji do celów naukowych ;-)
Ponieważ itoa()
jest to rzeczywiście niestandardowe, o czym wspomniało kilku pomocnych komentatorów, najlepiej jest użyć sprintf(target_string,"%d",source_int)
lub (jeszcze lepiej, ponieważ jest bezpieczny przed przepełnieniem bufora) snprintf(target_string, size_of_target_string_in_bytes, "%d", source_int)
. Wiem, że to nie jest tak zwięzłe ani fajne, jak itoa()
, ale przynajmniej możesz napisać raz, biegać wszędzie (tm) ;-)
Oto stara (zredagowana) odpowiedź
Masz rację twierdząc, że domyślna gcc libc
wersja nie obejmuje itoa()
, jak kilka innych platform, ponieważ technicznie nie jest częścią standardu. Zobacz tutaj, aby uzyskać więcej informacji. Pamiętaj, że musisz
#include <stdlib.h>
Oczywiście już to wiesz, ponieważ chciałeś używać itoa()
na Linuksie po przypuszczalnym użyciu go na innej platformie, ale ... kod (skradziony z powyższego linku) wyglądałby tak:
Przykład
/* 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;
}
Wynik:
Enter a number: 1750
decimal: 1750
hexadecimal: 6d6
binary: 11011010110
Mam nadzieję że to pomoże!
sprintf(str, "%d", num)
? czy jest dużo wolniejszy niżitoa
?