[C] problemi con ATOI quando utilizzo stringhe ricavate con

di il
2 risposte

[C] problemi con ATOI quando utilizzo stringhe ricavate con

Ho un file in input cosi' composto:
i valori sono costituiti da due colonne di stringhe, separate tra loro da uno spazio
• ciascuna stringa codifica un numero intero senza segno rappresentato in base binaria
• ciascuna stringa è costituito da 12 cifre binarie (caratteri '0' oppure '1')


QUESTA PARTE DI MAIN CARICA LA RIGA E DOVREBBE CONVERTIRLA IN DECIMALE CON ATOI



FILE *fin;
int  j;
int k;
char primo[13];
char secondo[13];
fscanf(fin,"%s %s",primo,secondo);
printf ("primo numero : %s \n",primo);
printf ("secondo numero : %s\n", secondo);
 k=atoi(primo);
 j=atoi(secondo);
printf ("primo numero in decimale : %d \n",k);
printf ("secondo numero in decimale : %d \n",j);
IL PROBLEMA E' CHE COME OUTPUT OTTENGO:

primo numero : 100000010110
secondo numero : 101010110011
primo numero in decimale : 1215762302
secondo numero in decimale : -2069105093

quando stampo le stringhe sembra tutto ok...output e input coincidono ma quando converto con atoi gli output sono sballati completamente.....come si vede sopra!!!
QUALCUNO PUO' AIUTARMI?
GRAZIE MILLE IN ANTICIPO!!!!!

2 Risposte

  • Re: [C] problemi con ATOI quando utilizzo stringhe ricavate con

    Atoi() considera la stringa passata in input come un numero in base 10;
    e un numero di 12 cifre supera la capienza massima di un numero di tipo int
    (quali sono j, k); questo spiega il risultato imprevisto;
    e anche se usassi un tipo intero con piu' capienza, otteresti
    un numero in base 10 formato da 0 e 1, non l'equivalente decimale
    del numero binario rappresentato dalla stringa.

    Se ti interessa il numero in base 10 corrispondente a una stringa
    letta dal file, una soluzione potrebbe essere creare una funzione
    che riceva in input la stringa e la converta in numero decimale.

    L'algoritmo dovrebbe leggere tutti i caratteri della stringa
    e, quando incontra il carattere '1', sommare (a una variabile
    con valore iniziale 0) una potenza di 2 con esponente determinato
    dalla posizione della cifra nella stringa
    (prima cifra a destra, esponente 0, seconda esp. 1, ecc.).
  • Re: [C] problemi con ATOI quando utilizzo stringhe ricavate con

    Segnalo crossposting ... avevi avuto risposte in

    http://forum.html.it/forum/showthread.php?threadid=2929905&postid=25330992#post25330992

    e qui è vietato ...
Devi accedere o registrarti per scrivere nel forum
2 risposte