РЕДАКТИРОВАТЬ: Извините, я должен был помнить, что эта машина явно нестандартна, поскольку в нее были включены различные нестандартные libc
реализации для академических целей ;-)
Поскольку itoa()
это действительно нестандартно, как упоминалось несколькими полезными комментаторами, лучше всего использовать sprintf(target_string,"%d",source_int)
или (еще лучше, потому что это безопасно от переполнения буфера) snprintf(target_string, size_of_target_string_in_bytes, "%d", source_int)
. Я знаю, что это не так лаконично или круто itoa()
, но по крайней мере вы можете написать один раз, запустить везде (tm) ;-)
Вот старый (отредактированный) ответ
Вы правы, утверждая, что стандарт по умолчанию gcc libc
не включает itoa()
, как некоторые другие платформы, потому что технически он не является частью стандарта. См. Здесь для получения дополнительной информации. Обратите внимание, что вам нужно
#include <stdlib.h>
Конечно, вы уже знаете это, потому что хотели использовать itoa()
Linux после того, как предположительно использовали его на другой платформе, но ... код (украденный по ссылке выше) будет выглядеть так:
пример
#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;
}
Выход:
Enter a number: 1750
decimal: 1750
hexadecimal: 6d6
binary: 11011010110
Надеюсь это поможет!
sprintf(str, "%d", num)
? это намного медленнее, чемitoa
?