|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
[C] Leggere da file binario
Ciao a tutti!
![]() Ho un problema nel leggere dei dati da un file binario. Praticamente devo leggere l'header del file che è una struttura (creata in funzioni precedenti per scriverla poi su file in modalità binaria) fatta in questo modo: Codice:
typedef struct{ char name[DBF_NAME_LENGTH+1]; short NumCampi; long NumRecords; short dimHeader; short dimRecord; long timestamp; }header; Codice:
/* verificaLettura mi dice se tutte le letture sono andate a buon fine. verificaSeek mi dice se tutti gli spostamenti nel file sono andati a buon fine. ihndl[handle] è un array di strutture che contiene, oltre ad altri campi, il File Pointer. */ verificaLettura+=fread(DBFInfo->Name,sizeof(char),DBF_NAME_LENGTH+1,ihndl[handle].fp); verificaSeek+=fseek(ihndl[handle].fp,sizeof(char)*DBF_NAME_LENGTH+1,SEEK_CUR); verificaLettura+=fread(&tmp1,sizeof(short),1,ihndl[handle].fp); DBFInfo->NumFields=(uint16_t) ntohs(tmp1); verificaSeek+=fseek(ihndl[handle].fp,sizeof(short),SEEK_CUR); verificaLettura+=fread(&tmp2,sizeof(long),1,ihndl[handle].fp); DBFInfo->NumRecs=(uint32_t) ntohl(tmp2); verificaSeek+=fseek(ihndl[handle].fp,sizeof(long),SEEK_CUR); verificaLettura+=fread(&tmp1,sizeof(short),1,ihndl[handle].fp); DBFInfo->HeaderLen=(uint16_t) ntohs(tmp1); verificaSeek+=fseek(ihndl[handle].fp,sizeof(short),SEEK_CUR); verificaLettura+=fread(&tmp1,sizeof(short),1,ihndl[handle].fp); DBFInfo->RecordLen=(uint16_t) ntohs(tmp1); verificaSeek+=fseek(ihndl[handle].fp,sizeof(short),SEEK_CUR); verificaLettura+=fread(&tmp2,sizeof(long),1,ihndl[handle].fp); DBFInfo->LastUpdate=(uint32_t) ntohl(tmp2); verificaSeek+=fseek(ihndl[handle].fp,sizeof(long),SEEK_CUR); Grazie. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Nessuno?
![]() Ho provato anche a leggere con fread mettendo il valore letto su un array invece che su DBFInfo->Name ma è lo stesso non prende niente, mi stampa una stringa tutta vuota. ![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Risolto!!!
![]() Ho fatto un rewind prima della scrittura e ora prende tutto. Mah sempre più strano sto C ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:27.