Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    84

    [C] Lettura binaria di un file ed estrazione contenuti

    Salve, mi hanno dato un file dal quale tramite un programma scritto in C devo estrapolare dei valori double per riempire un vettore bidimensionale. Il file inizia con 2 valori Boolean, poi 3 Long e poi continua con una sequenza di Double (quelli che servono a me) fino alla fine. Il file da quello che ho capito è scritto in binario infatti aprendolo col notepad vedo simboli strani... Devo usare quindi la lettura binaria? Che funzioni devo utilizzare per risolvere questo problema?

  2. #2
    Fondamentalmente devi usare la fread.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    84
    Come potrei fare? Perchè i primi 2 Boolean e i successivi tre Long li devo saltare...

  4. #4
    Usa la fseek per saltare i byte in questione; ricorda che puoi ottenere il numero di byte di un tipo usando l'operatore sizeof.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    84
    per esempio posso fare così?

    FILE *pf = fopen("prova.dat", "rb");

    if(pf==NULL)
    return o;


    fseek(pf, (sizeof(bool))*2 , SEEK_SET); //SEEK_SET indica di applicare l'offset a partire dall'inizio del file

    fseek(pf, (sizeof(long int))*3, SEEK_CUR); //SEEK_CUR indica di applicare l'offset a partire dalla posizione corrente

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Sì ... ma puoi semplicemente inserire tutto nella prima fseek

    fseek(pf, sizeof(bool)*2 + sizeof(long int)*3, SEEK_SET);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    84
    Ok perfetto e ora come uso la fread() per iniziare a leggere i double? Grazie mille

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    La usi subito dopo la fseek
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    84
    Ok ma non riesco a capire come funziona. Cioè ho visto che accetta 4 parametri.

    fread(xxx ,sizeof(double), 1, pf )

    al posto di xxx va un vettore? Come la devo usare? Scusate l'ignoranza

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    No ... se devi leggere una variabile double, ci vuole il puntatore a quella variabile ...

    Leggi la documentazione quando hai dubbi

    http://www.cplusplus.com/reference/c.../cstdio/fread/
    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 © 2024 vBulletin Solutions, Inc. All rights reserved.