PDA

View Full Version : [C] - stringa ascii in decimale


gabmac2
23-09-2009, 12:06
Buongiorno a tutti,ho un problema in un linguaggio poco conosciuto,ed è per questo che propongo di risolverlo su C,dopo lo implemento su questo linguaggio.L' unica cosa fondamentale è risolvere questo quesito

"funzione che permette di ottenere da una stringa di caratteri ascii rappresentante un numero decimale anche di
piu' cifre il suo valore"

se io inserisco 456 ad esempio in sequenze ascii,qual' è il suo valore?
Quel che mi serve è anche solo a parole il risultato,cosa devo avere
da 4 da ascii in decimale ecc.....
Grazie in anticipo

fero86
23-09-2009, 19:09
una banale atoi o sscanf quindi.

devi scannerizzare la stringa dal primo all'ultimo carattere, controllare che ogni carattere sia numerico (uscire direttamente con un errore altrimenti) ed aggiornare un valore intero aggiungendovi la cifra che hai appena letto.

codice C non testato:

int MyAtoi(const char *psz)
{
int nValue = 0;
while (*psz)
{
char ch = *psz;
if ((ch < '0') || (ch > '9'))
{
return -1:
}

int nDigit = ch - '0';
nValue = nValue * 10 + nDigit;

psz++;
}
return nValue;
}

la funzione restituisce un numero negativo se la stringa ricevuta in input non contiene esclusivamente caratteri numerici.

EDIT - nel mio codice c'é un errore: se gli passi la stringa vuota restituisce 0. la correzione é lasciata come esercizio al lettore :asd: