Sto facendo un piccolo progetto dove devo gestire i dati di persone, ora devo creare una procedura che mi permetta di leggere da un file binario (il cui nome viene passato come parametro) una lista di persone. L’allocazione dinamica deve avvenire dentro la subroutine. Il file deve essere aperto e chiuso dentro la funzione. Il puntatore al vettore dinamico dovrà essere assegnato al relativo campo del parametro ‘dati’ così come il numero di elementi letti.
Ho due funzioni pronte per aprire e chiudere il file:
Questa è l'implementazione della funzione loadData:
Dentro il file dat c'è per prima cosa il numero totale di strutture, poi ci sono i dati delle persone, ecco un esempio: https://pastebin.com/s4LxFNGE
Questo è VD:
Questa è l'implementazione di RecordSubj
Mi potete aiutare?
PS Posso utilizzare solo librerie standard
Ho due funzioni pronte per aprire e chiudere il file:
Codice:
FILE *openFile(char *nameFile, char *mode){
FILE *fp = fopen(nameFile, mode);
if(fp == NULL)
exit(-1);
return fp;
}
Codice:
FILE *closeFile(FILE * fp) {
if (fp != NULL)
fclose(fp);
return NULL;
}
Questa è l'implementazione della funzione loadData:
Codice:
void loadData(VD *data, char *namefile){
FILE* f = openFile(namefile, "r");
char string[200]; //Non so quale dimensione dare alla stringa
while(!feof(f)){
fgets(string,200,f);
}
closeFile(f);
}
Dentro il file dat c'è per prima cosa il numero totale di strutture, poi ci sono i dati delle persone, ecco un esempio: https://pastebin.com/s4LxFNGE
Questo è VD:
Codice:
typedef struct{
RecordSubj *v;
int nElements;
} VD;
Questa è l'implementazione di RecordSubj
Codice:
typedef struct { char name[SIZE_NAME + 1];
char surname[SIZE_SURNAME + 1];
int height;
float weight;
char eyeColor[DIM_COLOR];
char hairColor[DIM_COLOR];
hair hairLength;
_Bool beard;
_Bool scar;
char key[DIM_KEY];
char lives[SIZE_LIVES + 1];
GPSPosition position;
StateOf state;
} RecordSubj;
Mi potete aiutare?
PS Posso utilizzare solo librerie standard
Ultima modifica da un moderatore: