Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    25

    [C] - Problemi con lettura da file.

    Salve a tutti, devo fare un programma e mi serve leggere da file le informazioni che devo trattare.

    Si tratta di un file txt formattato nel seguente modo

    NOME CREDITO RISORSA1 QUANTITA_RISORSA1 RISORSA2 QUANTITA_RISORSA2 .......
    NOME CREDITO RISORSA1 QUANTITA_RISORSA1 RISORSA2 QUANTITA_RISORSA2 RISORSA3 QUANTITA_RISORSA3.......
    NOME CREDITO RISORSA1 QUANTITA_RISORSA1
    ...
    dove i campi NOME CREDITO RISORSA1 QUANTITA_RISORSA1, sono presenti sicuramente, mentre seguono un numero variabile di risorse dalla due in poi a seconda del nome.

    Dal mio programma devo riempire una struttura che ho definito in questo modo:

    codice:
    typedef struct {
    		char nome[N];
    		int credito;
    		risorseInteressate risorse[N];
    	}cliente;
    il problema è che io ho un numero variabile di risorse e non riesco a capire come implementarlo.
    Mi potete dare una mano?
    Grazie mille
    Davide

  2. #2
    Ti sconsiglio di accedere direttamente al file con la fscanf.
    Se tutte le risorse sono sempre sulla stessa riga, ti conviene leggere l'intera riga come unica stringa, e poi lavori su questa :
    Memorizzi con la ftell() la posizione di lettura nel file.
    Procedi con la ricerca del carattere newline.
    leggi di nuovo la posizione nel file con una seconda chiamata a ftell()
    Allochi una stringa della dimensione corrispondente a (LetturaPosizione2-LetturaPosizione1)+1
    riposizioni l'indice di lettura del file alla posizione LetturaPosizione1, con la fseek()
    leggi dal file tutti i caratteri della riga.
    ora puoi parsare la stringa per estrapolare i dati.
    continui dalla riga successiva
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    25
    Grazie mille, però non riesco a implementarlo.
    Non mi riesci a scrivere un esempio?
    grazie ancora.

    Quote Originariamente inviata da Samuele_70 Visualizza il messaggio
    Ti sconsiglio di accedere direttamente al file con la fscanf.
    Se tutte le risorse sono sempre sulla stessa riga, ti conviene leggere l'intera riga come unica stringa, e poi lavori su questa :
    Memorizzi con la ftell() la posizione di lettura nel file.
    Procedi con la ricerca del carattere newline.
    leggi di nuovo la posizione nel file con una seconda chiamata a ftell()
    Allochi una stringa della dimensione corrispondente a (LetturaPosizione2-LetturaPosizione1)+1
    riposizioni l'indice di lettura del file alla posizione LetturaPosizione1, con la fseek()
    leggi dal file tutti i caratteri della riga.
    ora puoi parsare la stringa per estrapolare i dati.
    continui dalla riga successiva

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da d2v1d3 Visualizza il messaggio
    Grazie mille, però non riesco a implementarlo.
    Non mi riesci a scrivere un esempio?
    grazie ancora.
    Prova a scrivere tu qualcosa, poi si vede cosa non funziona ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.