PDA

View Full Version : [C]: problema con conversione da stringa ad intero


axxel84
18-10-2006, 15:18
Sto scrivendo un programmino multimodulo per un corso all' università.
Uno dei moduli che lo compone è un convertitore numerico: prende in input una stringa di simboli da interpretare in una data base e ne fa la conversione in base 10.

Esempio:
se setto la base a 8 e decodifico la stringa "15", otterrò il numero naturale 13

il problema è che, quando passo la stringa carattere per carattere, per interpretarli uno alla volta e moltiplicarli per la corrispondente potenza della base, il primo carattere della stringa mi viene sempre "letto male".

Esempio di output con base = 8 e valore da convertire = 3274:


Conversione di $274 da base 8 a base 10 = 1174302908


a cosa può essere dovuto il problema?
allego i tre sorgenti per maggiore chiarezza (sono rinominati come txt, perchè altrimenti non potevo allegarli)

-fidel-
18-10-2006, 16:46
Questa funzione ad esempio non va affatto bene


char* maiusc(char* s1)
{
char* s2;
int i;
for(i = 0; i < strlen(s1); i++)
if(islower(s1[i]))
s2[i] = toupper(s1[i]);
return(s2);
}


s2 è un puntatore (che non punta ad alcuna zona di memoria allocata) e tu gli assegni anche più di un carattere...

EDIT: Io la modificherei così:


void maiusc(char* s1)
{
int i;
for(i = 0; i < strlen(s1); i++)
if(islower(s1[i]))
s1[i] = toupper(s1[i]);
return;
}


occhio che non c'è alcun controllo di errore (del tipo, controllare se *s1 è null, oppure controllare il valore ritornato da strlen, ma ho voluto lasciare il più possibile immutato il tuo codice.
Personalmente userei ad esempio strnlen() invece di strlen().