Salve a tutti
Premetto che sono molto ignorante in materia e vorrei chiedere gentilmente aiuto a tutti voi esperti, sto scrivendo un programma in C che legga da un file di testo dei dati e li aggiunga in una lista, ma anche se viene compilato il programma si arresta alla prima riga di testo, con il seguente messaggio di errore : free() invalid next size (fast).
qualcuno saprebbe come correggerlo?
ecco qui il codice
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct nodo {
int age;
char *name;
char *naz;
char *info;
struct nodo *next;
};
void printlist(struct nodo *t);
int main(int argc, char **argv)
{
char tmp1[50],tmp2[10],tmp3[100];
int age;
printf("Esercitazione 1, code : 5!\n");
struct nodo *lista = NULL, *t;
FILE *fp;
fp = fopen("ciclisti.txt","r");
if(!fp){
fprintf(stderr,"Errore : \n");
perror(" ");
exit(EXIT_FAILURE);
}
if (fp) {
printf("Ho aperto il file!\n");
}
printf("Inizio la lettura da file!\n");
while(fscanf(fp,"%d;%[^;];%[^;];%[^\n]",&age,tmp1,tmp2,tmp3)==4)
{
t = malloc(sizeof(struct nodo));
t->age=age;
t->name=malloc(sizeof(strlen(tmp1)+1));
t->naz=malloc(sizeof(strlen(tmp2)+1));
t->info=malloc(sizeof(strlen(tmp3)+1));
strcpy(t->name,tmp1);
strcpy(t->naz,tmp2);
strcpy(t->info,tmp3);
t->next = lista;
lista=t;
printlist(lista);
free(t->name);
free(t->naz);
free(t->info);
}
fclose(fp);
return 0;
}
void printlist(struct nodo *t){
if(!t) return;
printf("Dati del nodo: %d %s %s %s\n",t->age,t->name,t->naz, t->info);
printlist(t->next);
}
il file di testo è strutturato nel seguente modo:
1968;MERCKX Eddy;bel;Faema
1967;GIMONDI Felice;ita;Salvarani
Grazie a tutti !