salve ragazzi sono nuovo del forum, ho un problema con la lettura di un file e memorizzare i dati in una struct
il file contiene una lista di dati di persone del tipo
MARIO
ROSSI
27/11/95
ROMA
M
FRANCO
ADDANTE
25/06/1987
MILANO
M
.
.
.
questa è la struct..
codice:typedef struct person_struct{ char surname[MAX_SURNAME]; /**< Stringa contenente il cognome. */ char name[MAX_NAME]; /**< Stringa contenente il nome. */ char birth_date[BIRTH_DATE_LEN]; /**< Stringa contenente la data di nascita. */ char birth_place[MAX_BIRTH_PLACE]; /**< Stringa contenente il luogo di nascita. */ char sex; /**< Carattere che indica il sesso. */ char cf[CF_LEN]; /**< Stringa contenente il codice fiscale. */ }person;
questa è la mia funzione chiamata che riceve il file e ne legge 5 righe..il problema sta nel fatto che al primo giro riesco a leggere i dati e momorizzarli nella struct ma quando chiamo di nuovo la funzione e quindi accedo di nuovo al file non mi parte dalla sesta riga ovvero quella contenente altri dati anagrafici di persone.. ho provato a usare un puntatore di posizione ma con scarsi risultati..spero voi riusciate a risolvere il problema.. grazie in anticipo..
codice:person* read_person(FILE* people_file){ person struct_person; //struct del tipo person fpos_t* pos; //indicatore di posizione if(people_file == NULL){ printf("Impossibile aprire il file.\n"); exit(1); } fsetpos(people_file,pos); fgets(struct_person.surname, MAX_SURNAME, people_file); fgets(struct_person.name, MAX_NAME, people_file); fgets(struct_person.birth_date, BIRTH_DATE_LEN, people_file); fgets(struct_person.birth_place, MAX_BIRTH_PLACE, people_file); struct_person.sex = fgetc(people_file); fgetpos (people_file, pos); person_ptr=&struct_person; return person_ptr; }


Rispondi quotando
