Errore di segmentazione nella creazione di una lista da file

di il
3 risposte

Errore di segmentazione nella creazione di una lista da file

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?

3 Risposte

Devi accedere o registrarti per scrivere nel forum
3 risposte