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);
}