Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2015
    residenza
    PAvia
    Messaggi
    4

    [C] problemi con ATOI quando utilizzo stringhe ricavate con FSCANF

    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

    codice:
    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:

    codice:
    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!!!!!
    Ultima modifica di LeleFT; 16-09-2015 a 12:26 Motivo: Aggiunti i tag CODE

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Ho corretto il titolo (scrivere HELP ME non serve a nulla, se stai scrivendo nel forum è chiaro ed ovvio che hai bisogno di un aiuto)... L'ho anche accorciato: è un titolo, deve dare un'idea sintetica del contenuto (dove viene sviluppata in dettaglio la richiesta).

    Ho anche aggiunto i tag CODE per il codice e tutto quanto debba essere pre-formattato.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2015
    residenza
    PAvia
    Messaggi
    4
    Grazie mille!!!
    scusa gli errori ma sono nuovo!!!

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Quei valori sono troppo grandi per un intero a 32 bit ...


    P.S. E non scrivere in MAIUSCOLO ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2015
    residenza
    PAvia
    Messaggi
    4
    ok grazie Oregon!!!e chiedo scusa per il maiuscolo!!!

    maaa quindi dovrei utilizzare un tipo unsigned long long con %llu ?

    ho provato ma non funziona lo stesso, hai qualche idea su come posso risolvere?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Dipende un po' dal compilatore ... potresti usare l'unsigned long long e il codice

    codice:
    k= _atoi64(primo);
    j= _atoi64(secondo);
    
    printf ("primo numero in decimale : %llu \n",k);
    printf ("secondo numero in decimale : %llu \n",j);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2015
    residenza
    PAvia
    Messaggi
    4
    Ok, grazie mille Oregon

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.