Allora la funzioni "inserimento_bus" deve ritornare una variabile di tipo lista_bus perché dopo l'inserimento devi sapere quale nodo stampare. Nel tuo codice la funzione non ritornava nulla, ed è per questo che non stampavi nulla. Fai la stessa cosa per la funzione "inserimento_cond".
Nella funzione "caricamento" metti una condizione per decidere quale delle due struct caricare e nel main ti regoli ti conseguenza per stampare.
Per qualunque chiarimento sono qui![]()
codice:#include<stdio.h> #include<string.h> #include<stdlib.h> #define max 30 //////////////Definizione STRUCT typedef struct s_cond{ char nome[max]; int giorni,percorso; }cond; typedef struct s_nodo_cond{ cond info; struct s_nodo_cond *next; }nodo_cond; typedef nodo_cond *lista_cond; typedef struct s_auto{ char targa[max]; int posti,km; }bus; typedef struct s_nodo_bus{ bus info; lista_cond *punt_interno; struct s_nodo_bus *next; }nodo_bus; typedef nodo_bus *lista_bus; /////////////////////////////////////////////////// FUNZIONI lista_bus inserimento_bus(lista_bus *lis,bus b){ lista_bus aux=NULL; aux=(lista_bus)malloc(sizeof(nodo_bus)); aux->info=b; aux->punt_interno=NULL; aux->next=*lis; return aux; } lista_cond inserimento_cond(lista_cond *lis,cond d){ lista_cond aux=NULL; aux=(lista_cond)malloc(sizeof(nodo_cond)); aux->info=d; aux->next=*lis; return aux; } lista_bus caricamento(lista_bus *lis){ FILE *fp; bus b; cond c; lista_bus point=NULL; fp=fopen("archivio.txt","r"); if(fp==NULL){ perror(""); exit(1); } while(fscanf(fp,"%s%d%d",b.targa,&b.posti,&b.km) ==3){ point=inserimento_bus(lis,b); //inserimento_cond((*lis)->punt_interno,c); } fclose(fp); return point; } void stampa_cond(lista_cond lis){ while(lis!=NULL){ printf("\nNome: %s",lis->info.nome); printf("\nGiorni: %d",lis->info.giorni); printf("\nPercorso: %d",lis->info.percorso); lis=lis->next; } } void stampa_bus(lista_bus lis) { lista_bus aux=lis; while(aux!=NULL){ printf("\nTarga: %s",aux->info.targa); printf("\nPosti: %d",aux->info.posti); printf("\nKm: %d",aux->info.km); //stampa_cond(aux->punt_interno); aux=aux->next; } } ////////// MAIN int main(){ lista_bus lista_bus=NULL; lista_cond lista_cond=NULL; int scelta; do{ printf("\n1)Caricamento"); printf("\n2)Stampa"); printf("\n\n\tScelta: "); scanf("%d",&scelta); switch(scelta){ case 1: lista_bus=caricamento(&lista_bus); break; case 2: stampa_bus(lista_bus); break; } }while(scelta!=0); }

Rispondi quotando