Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408

    [C] Problema lettura di interi da file con separatore

    Salve a tutti. Devo leggere degli interi da file così composti:

    1.2.3.4.
    5.6.7.8.
    1.2.3.4.
    5.6.7.8.

    La lettura da file è la seguente (e non da problemi senza il separatore):
    codice:
    void LeggiMatriceDaFile(double *m, int *dim)
    {
        int i;
        FILE *fp;
        fp=fopen("file.txt", "r");
        for(i=0; i<*dim; i++){
            fscanf(fp, "%lf", m);
            m++;
        }
        fclose(fp);
    }
    Per provare a leggere quel tipo di file ho pensato di inserire nella fscanf la lettura di un carattere e di sovrascriverlo man mano.
    codice:
    void LeggiMatriceDaFile(double *m, int *dim)
    {
        int i;
        char c;
        FILE *fp;
        fp=fopen("file.txt", "r");
        for(i=0; i<*dim; i++){
            fscanf(fp, "%lf%c", m, &c);
            m++;
        }
        fclose(fp);
    }
    Andando a provare però, noto che mi salta dei numeri e quindi ad un certo punto sballa completamente dando numeri a caso. Non riesco a comprendere il perché.

    Qualcuno riesce a darmi una mano?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ovviamente il punto interferisce con la lettura in quanto interpretato come punto decimale (per un double).

    Dato che sono interi, leggi così

    fscanf(fp, "%d.", &val);

    (nota il punto che verrà saltato) in cui val è un intero e poi convertilo in double
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Grazie mille

  4. #4
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Ho provato con la tua soluzione. Ma il cast credo non vada a buon fine.

    Il codice è questo:
    codice:
    fscanf(fp, "%d.", &val);
    m = (double*)val;
    ma m vale sempre zero, mentre val assume i valori giusti della matrice.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Direi che fai un po' confusione con i puntatori ...

    *m = (double)val;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Direi che fai un po' confusione con i puntatori ...

    *m = (double)val;
    Si, in effetti ho fatto un po' di confusione.. grazie per l'aiuto.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.