non ho eseguito il tuo codice, ma parto dall'errore e da quello che scrivi.
L'errore è segmentation fault, fin'ora quando ho visto questo errore ho provato l'accesso a memoria non inizializzata oppure sono andata fuori dal mio spazio di esecuzione.
Questa è la tua funzione di stampa
guarda la funzione, il primo controllo è mettere delle printf prima di ogni istruzione (o debuggare) per sapere a che punto arrivi. Tipo questocodice:void stampa (Tlista_centraline l) { int x,y; Tlista_dati tmp; printf ("inserisci id\n"); scanf ("%d",&x); printf ("inserisci ora\n"); scanf ("%d",&y); while (l!=NULL) { tmp=l->dato.dati_ril; if (l->dato.id==x && tmp->dato.ora==y) printf ("ecco le ubicazioni che cercavi %d",l->dato.ubicazione); l=l->succ; } }
provi e vedi a che punto arrivi. La prima printf che non vedi ti fa capire che all'istruzione prima fai qualcosa che non devi.codice:void stampa (Tlista_centraline l) { int x,y; Tlista_dati tmp; printf ("inserisci id\n"); scanf ("%d",&x); printf ("inserisci ora\n"); scanf ("%d",&y); printf("l'input l'ho preso\n"); while (l!=NULL) { printf("dentro ciclo prima di assegnare temp\n"); tmp=l->dato.dati_ril; printf("dentro ciclo dopo aver assegnato temp\n"); if (l->dato.id==x && tmp->dato.ora==y){ printf ("ecco le ubicazioni che cercavi %d",l->dato.ubicazione); } printf("dopo if\n"); l=l->succ; printf("ultima istruzione\n"); } }
Secondo me la struttura che passi ha qualche valore a NULL (che non controlli)

Rispondi quotando