Risolto grazie mille posto il codice corretto:
p.s. non significa che non possa essere migliorato
codice:#include"persona.h" #include<string.h> extern struct persona *leggi_persone(const char *filename, size_t *size) { FILE *f = fopen(filename, "rt"); if (f == NULL) { *size = 0; return NULL; fclose(f); } char p[50]; size_t nrighe; struct persona *ret; if(fscanf(f, "%i", &nrighe)<=0) { fclose(f); *size = 0; return NULL; } ret = malloc(sizeof(struct persona)*nrighe); for (size_t i = 0; i < nrighe; i++) { if (fscanf(f, "%i ,", &ret[i].anni) <= 0) { *size = 0; free(ret); fclose(f); return NULL; } if (fgets(p, 50, f) == NULL) {*size = 0; free(ret); fclose(f); return NULL; } strcpy(ret[i].nome, p); } fclose(f); *size = nrighe; return ret; free(ret); }

Rispondi quotando