C - ohjelmointikielen itoa -funktio palauttaa määritetyn kokonaisluvun sijaintimerkinnän annetulla kantaluvulla (esim. kantaluvun 7 luku 10 kirjoitetaan "13"). Tätä funktiota ei ole määritelty millään standardilla C-kielellä, mutta usein kääntäjät tukevat sitä otsikon avulla, koska se on merkitykseltään hyvin lähellä tavallista kirjastotoimintoa . <stdlib.h>atoi
void* itoa(int input, char *buffer, int radix)itoahyväksyy välitetyn kokonaisluvun inputja palauttaa sen esityksen peruslukujärjestelmässä radix(jonka tulee ottaa arvot välillä 2-36). Tulostusaakkoset koostuvat 36 merkistä - ensin 10 arabialaista numeroa, sitten 26 tavallista latinalaista kirjainta. Tuloksena oleva luku (perusnumeroiden sarja radix) kirjoitetaan lähtöpuskuriin buffer.
Toteutuksesta riippuen se itoavoi palauttaa osoittimen puskurin ensimmäiseen merkkiin buffertai se voidaan rakentaa välittämään null - buffer, jolloin funktio palauttaa kirjoitetun merkkijonon pituuden oikeaan buffer.
Jos haluat muuntaa luvun merkkijonoksi, jonka kantaluku on 8 (oktaali), 10 (desimaali) tai 16 ( heksadesimaali ), standardien mukainen vaihtoehto on käyttää tavallista kirjastofunktiotasprintf .
Toiminto itoaesiintyi Brian Kernighanin ja Denis Ritchien C-ohjelmointikielen ensimmäisessä painoksessa sivulla 60. C-ohjelmointikielen ("K&R2") toinen painos sivulla 64 sisälsi seuraavan toteutuksen itoa. Kirja panee merkille useita tähän toteutukseen liittyviä ongelmia, mukaan lukien se, että se ei pysty käsittelemään oikein pienintä negatiivista lukua −2 konesanan pituutta bitteinä-1 . [yksi]
/* itoa: muuntaa n merkeiksi s:ssä */ void itoa ( int n , char s []) { int i , merkki ; if (( merkki = n ) < 0 ) /* kirjoita merkki */ n = -n ; _ /* tee n:stä positiivinen luku */ i = 0_ _ tee { /* luo numerot käänteisessä järjestyksessä */ s [ i ++ ] = n % 10 + '0' ; /* hanki seuraava numero */ } while (( n /= 10 ) > 0 ); /* poista */ jos ( merkki < 0 ) s [ i ++ ] = '-' ; s [ i ] = '\0' ; käänteinen ( t ); }reverseKaksi sivua aikaisemmin toteutettu toiminto :
#include <string.h> /* käänteinen: käänteinen merkkijono s paikallaan */ void reverse ( merkkiä [ ]) { 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 ; } }Funktio itoa(ja samanlainen funktio ftoa, joka muuntaa liukulukuluvut merkkijonoksi) on lueteltu Unix -käsikirjan ensimmäisessä versiossa . [2] Toisin kuin yllä olevissa versioissa, Unix-kirjastoversiolla oli samanlainen käyttöliittymä kuin
void itoa(int input, void (*subr)(char))ja kutsuttiin takaisinsoittorutiini subr jokaiselle lähtörivin merkille, mikä eliminoi suuren puskurin tarpeen tallentaa koko rivi kerralla.