GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wo ist die Itoa-Funktion in Linux?

BEARBEITEN:Entschuldigung, ich hätte daran denken sollen, dass diese Maschine entschieden nicht standardmäßig ist, nachdem ich verschiedene nicht standardmäßige libc angeschlossen hatte Implementierungen für akademische Zwecke;-)

Als itoa() tatsächlich kein Standard ist, wie von mehreren hilfreichen Kommentatoren erwähnt, ist es am besten, sprintf(target_string,"%d",source_int) zu verwenden oder (noch besser, weil es vor Pufferüberläufen sicher ist) snprintf(target_string, size_of_target_string_in_bytes, "%d", source_int) . Ich weiß, es ist nicht ganz so prägnant oder cool wie itoa() , aber zumindest kannst du Write Once, Run Everywhere (tm);-)

Hier ist die alte (bearbeitete) Antwort

Sie geben zu Recht an, dass der Standardwert gcc libc enthält nicht itoa() , wie mehrere andere Plattformen, da es technisch gesehen nicht Teil des Standards ist. Sehen Sie hier für ein wenig mehr Informationen. Beachten Sie, dass Sie

müssen
#include <stdlib.h>

Das wissen Sie natürlich schon, weil Sie es benutzen wollten itoa() unter Linux, nachdem Sie es vermutlich auf einer anderen Plattform verwendet haben, aber ... der Code (gestohlen vom obigen Link) würde so aussehen:

Beispiel

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

Ausgabe:

Enter a number: 1750
decimal: 1750
hexadecimal: 6d6
binary: 11011010110

Hoffe, das hilft!


itoa ist keine Standard-C-Funktion. Sie können Ihre eigenen implementieren. Es erschien in der ersten Ausgabe von Kernighan und Ritchies Die Programmiersprache C , auf Seite 60. Die zweite Ausgabe von The C Programming Language ("K&R2") enthält die folgende Implementierung von itoa , auf Seite 64. Das Buch weist auf mehrere Probleme mit dieser Implementierung hin, einschließlich der Tatsache, dass die negativste Zahl nicht korrekt behandelt wird

 /* 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);
}  

Die Funktion reverse oben verwendet wird zwei Seiten früher implementiert:

 #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. Meistern Sie den Linux-ls-Befehl

  2. Wo ist das temporäre Verzeichnis in Linux?

  3. Wo ist die Gabel () auf der Gabelbombe :(){ :|:&};:?

  4. Linux:Wo soll die Auslagerungsdatei abgelegt werden

  5. Wo ist die Erklärung zur Ablehnung von ifconfig (unter Linux)?

Was ist die Shell unter Linux?

Wo sind die Konfigurationsdaten in Linux gespeichert

Der Timer-Befehl in Linux

Linux – Wo wird der Environment-String tatsächlich gespeichert?

Wo finde ich die erste Version des Linux-Betriebssystems?

Wo ist die php.ini-Datei auf einem Linux/CentOS-PC?