Conversione di numeri nelle stringhe corrispondenti
Conversione di numeri nelle stringhe corrispondenti
Con le seguenti funzioni è possibile trasformare un numero nella stringa corrispondente. Sono presentate le funzioni _itoa(), _ltoa(), _ultoa(), _ftoa() per convertire rispettivamente tipi int, long, unsigned long, e float in stringhe. La scelta di anteporre un underscore ( _ ) prima del nome della funzione è reso necessario dal fatto che queste sono automaticamente supportate da alcuni compilatori, quindi se programmate per esempio in Turbo C non c’è bisogno di inserirle nel vostro programma (Consultate le referenze del vostro compilatore per conoscere se sono supportate o meno). L’utilizzo di _itoa(), _ltoa() e _ultoa() è simile in quanto sostanzialmente fanno tutte da wrapper tramite casting alla funzione xtoa() che esegue il lavoro reale. Per quanto riguarda _ftoa() la chiamata differisce in quanto invece di passare la radice di conversione bisogna passare la precisione dei numeri prima e dopo la virgola.
Entriamo nei dettagli:
I parametri per le funzioni _itoa(), _ltoa() e _ultoa() sono val (il numero da convertire, rispettivamente di tipo int, long oppure unsigned long. Il buffer precedentemente allocato in cui salvare i risultati, la radice ovvero la base su cui effettuare la conversione (per il decimale è 10, per l’esadecimale 16 per l’ottale 8, ecc…).
Tutte ritornano un puntatore al buffer passato.
Qui invece viene presentata la funzione _ftoa() che come anticipato prima differisce nei parametri passati; infatti essa richiede come primo argomento il solito val in formato float ovvero il numero da convertire, come secondo e terzo parametro la precisione da utilizzare nella conversione (Attenzione m deve essere comunque minore di 15 e n minore di 12), e a invece è il buffer dove saranno inseriti i risultati. Notate che la lunghezza di a sarà proprio uguale a n+m+2. Anch’essa ritorna un puntatore al buffer passato.