Itoa - funktionen i programmeringssproget C returnerer positionsnotationen for det angivne heltal med den givne grundtal (f.eks. skrives tallet 10 i grundtal 7 som "13"). Denne funktion er ikke defineret i noget standard C-sprog, men ofte understøtter compilere den gennem brugen af headeren , da den i betydning er meget tæt på standardbiblioteksfunktionen . <stdlib.h>atoi
void* itoa(int input, char *buffer, int radix)itoaaccepterer det beståede heltal inputog returnerer dets repræsentation i basistalsystemet radix(som skal have værdier fra 2 til 36). Udgangsalfabetet består af 36 tegn - først 10 arabiske tal, derefter 26 standard latinske bogstaver. Det resulterende tal (en sekvens af basiscifre radix) skrives til outputbufferen buffer.
Afhængigt af implementeringen, itoakan returnere en pointer til det første tegn i bufferen buffer, eller kan være konstrueret til at sende en null- , bufferhvilket får funktionen til at returnere længden af strengen, der blev skrevet til den korrekte buffer.
For at konvertere et tal til en streng med grundtallet 8 (oktal), 10 (decimal) eller 16 ( hexadecimal ) , er et standardkompatibelt alternativ at bruge en standard biblioteksfunktionsprintf .
Funktionen itoadukkede op i den første udgave af Brian Kernighan og Denis Ritchies The C Programming Language , på side 60. Den anden udgave af The C Programming Language ("K&R2") på side 64 indeholdt følgende implementering itoa. Bogen bemærker flere problemer med denne implementering, herunder det faktum, at den ikke korrekt håndterer det mindste negative tal -2 længden af et maskinord i bit-1 . [en]
/* itoa: konverter n til tegn i s */ void itoa ( int n , char s []) { int i , tegn ; hvis (( tegn = n ) < 0 ) /* skriv tegn */ n = - n ; /* gør n til et positivt tal */ i = 0 _ generer { /* tal i omvendt rækkefølge */ s [ i ++ ] = n % 10 + '0' ; /* få det næste ciffer */ } while (( n /= 10 ) > 0 ); /* slet */ hvis ( tegn < 0 ) s [ i ++ ] = '-' ; s [ i ] = '\0' ; omvendt ( e ); }Funktion reverseimplementeret to sider tidligere:
#include <string.h> /* omvendt: omvendt streng er på plads */ ugyldig omvendt ( tegn [ ]) { 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 ; } }Funktionen itoa(og en lignende funktion ftoa, der konverterer flydende kommatal til en streng) er angivet i den første version af Unix- manualen . [2] I modsætning til ovenstående versioner havde Unix-biblioteksversionen en grænseflade svarende til
void itoa(int input, void (*subr)(char))og kaldet en tilbagekaldsrutine subr for hvert tegn i outputlinjen, hvilket eliminerer behovet for en stor buffer til at gemme hele linjen på én gang.