Salve a tutti,
ho bisogno di creare un programma che sia in grado di creare una lista leggendo i dati da inserire da un file per poi stamparla. Procedendo iterativamente non ho riscontrato problemi, ma nella creazione della lista in modo ricorsivo il programma si compila e stampa effettivamente la lista correttamente, ma con l'aggiunta della frase "Errore di segmentazione" in fondo alla schermata del terminale.
Questo è il codice:
#include<stdio.h>
#include<stdlib.h>
struct element
{
int x;
int y;
};
struct info
{
struct element data;
struct info *next;
};
typedef struct info node;
typedef node *list;
list new_node()
{
return malloc(sizeof(node));
}
list recursive_list(FILE *fp)
{
list head;
int x, y;
fscanf(fp,"%d %d", &x, &y);
if(feof(fp) == 0)
{
head = new_node();
head->data.x = x;
head->data.y = y;
head->next = recursive_list(fp);
}
}
//Stampa della lista
list print_list(list l)
{
while(l != NULL)
{
printf("%d %d\n", l->data.x, l->data.y);
l = l->next;
}
}
int main()
{
list l1;
FILE *fp;
fp = fopen("input.txt", "r");
if(fp == NULL)
{
printf("Errore: file non trovato.\n");
exit(1);
}
else
l1 = recursive_list(fp);
print_list(l1);
}
Non riesco a capire il problema, qualcuno potrebbe aiutarmi?