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