GNU/Linux >> Belajar Linux >  >> Linux

Di mana fungsi itoa di Linux?

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;
     }
}  

Linux
  1. Di mana direktori sementara di Linux?

  2. Di mana letak sistem file Subsistem Linux di Windows 10?

  3. Dimana fork() pada fork bomb :(){ :|:&};:?

  1. Kuasai perintah Linux ls

  2. Linux:Tempat meletakkan file swap

  3. Di mana pernyataan penghentian ifconfig (di linux)?

  1. Perintah cari di Linux

  2. Di mana file header <conio.h> di Linux? Mengapa saya tidak dapat menemukan <conio.h>?

  3. Di mana PATH_MAX didefinisikan di Linux?