EDIT:Maaf, saya seharusnya ingat bahwa mesin ini jelas tidak standar, setelah memasang berbagai libc
non-standar implementasi untuk tujuan akademis;-)
Sebagai itoa()
memang tidak standar, seperti yang disebutkan oleh beberapa komentator yang membantu, yang terbaik adalah menggunakan sprintf(target_string,"%d",source_int)
atau (lebih baik lagi, karena aman dari buffer overflows) snprintf(target_string, size_of_target_string_in_bytes, "%d", source_int)
. Saya tahu ini tidak sesingkat atau sekeren itoa()
, tapi setidaknya Anda bisa Menulis Sekali, Jalankan Di Mana Saja (tm);-)
Ini jawaban lama (diedit)
Anda benar dalam menyatakan bahwa gcc libc
default tidak termasuk itoa()
, seperti beberapa platform lainnya, karena secara teknis tidak menjadi bagian dari standar. Lihat di sini untuk sedikit info lebih lanjut. Perhatikan bahwa Anda harus
#include <stdlib.h>
Tentu Anda sudah mengetahui hal ini, karena Anda ingin menggunakan itoa()
di Linux setelah mungkin menggunakannya di platform lain, tetapi... kodenya (dicuri dari tautan di atas) akan terlihat seperti:
Contoh
/* 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;
}
Keluaran:
Enter a number: 1750 decimal: 1750 hexadecimal: 6d6 binary: 11011010110
Semoga ini bisa membantu!
itoa
bukan fungsi C standar. Anda dapat mengimplementasikannya sendiri. Itu muncul di edisi pertama Kernighan dan Ritchie Bahasa Pemrograman C , di halaman 60. Edisi kedua Bahasa Pemrograman C ("K&R2") berisi implementasi itoa
berikut , di halaman 64. Buku ini mencatat beberapa masalah dengan implementasi ini, termasuk fakta bahwa ini tidak menangani angka paling negatif dengan benar
/* itoa: convert n to characters in s */
void itoa(int n, char s[])
{
int i, sign;
if ((sign = n) < 0) /* record sign */
n = -n; /* make n positive */
i = 0;
do { /* generate digits in reverse order */
s[i++] = n % 10 + '0'; /* get next digit */
} while ((n /= 10) > 0); /* delete it */
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
Fungsi reverse
digunakan di atas diimplementasikan dua halaman sebelumnya:
#include <string.h>
/* reverse: reverse string s in place */
void reverse(char s[])
{
int i, j;
char c;
for (i = 0, j = strlen(s)-1; i<j; i++, j--) {
c = s[i];
s[i] = s[j];
s[j] = c;
}
}