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

}