Lista di struct

slevyn
Salve ragazzi ..ho una lista di struct ..ovvero ogni nodo della lista è una struttura di questo tipo :
typedef struct { char nomeGiocatore[30];
int tempoImpiegato;
} NOME;

e la lista

struct listNodo{
NOME punteggi;
struct listNodo *Ptr_successivo;/* Puntatore al prossimo nodo*/
};

typedef struct listNodo LISTNODE;/* Sinonimo di struct ListNodo*/
typedef LISTNODE *LISTNODEPTR;


Dovrei leggere da file BINARIO una specie di classifica che consta di NOME e TEmpo impiegato e inserirla nella lista . Sto impazzendo con fread ...ma non ci riesco..mi potreste dare una mano?

Risposte
apatriarca
In che modo i dati sono scritti nel file binario? Sei certo che siano nello stesso "formato" di quella stringa? Mostreresti il tuo codice?

slevyn
non sono pratico di file binari... ho fatto così

void scriviClassificaSuFile()
{
fpIN = fopen("classifica.txt","wb");
fwrite(topTen,sizeof(LISTNODEPTR),1,fpIN);
fprintf(fpIN,"\n");
fclose(fpIN);



void statistiche(LISTNODEPTR Ptr_corrente) /* Visualizzazione della lista */
{

FILE *fp = fopen("classifica.txt", "rb");
fread(&topTen, sizeof(LISTNODEPTR), 1, fp);
fclose(fp);
//printf("Nome Giocatore: %s ; Tempo Impiegato: %s\n", punteggio.nomeGiocatore, punteggio.tempoImpiegato);
}

apatriarca
Il tuo problema è in sizeof(LISTNODEPTR). LISTNODEPTR è un puntatore alla tua struttura e come tale ha dimensione diversa dalla struttura (normalmente 4 o 8 byte nei PC attuali). La tua struttura è invece molto più grossa. Devi usare sizeof(LISTNODE). Nota però che i puntatori non si mantengono una volta scritti su file...

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.