Allora non ho avuto bisogno di fare un'altra funzione, bastava usare una variabile esterna per appoggio. Ti posto il codice, con questo riesci a stampare tutto. (MItaly sicuramente modificherai il quote, mi puoi indirizzare alla pagina dove si spiega come postare i codici? Grazie in anticipo).
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;
lista_cond ext=NULL; //Variabile esterna d'appoggio
/////////////////////////////////////////////////// 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;
lista_cond cond=NULL;
fp=fopen("archivio.txt","r");
if(fp==NULL){
perror("");
exit(1);
}
while(fscanf(fp,"%s%d%d%s%d%d",b.targa,&b.posti,&b.km,c.nome,&c.percorso,&c.giorni) != EOF)
{
point=inserimento_bus(lis,b);
ext=inserimento_cond(cond,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;
int scelta;
int n=0,y=1;
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);
stampa_cond(ext);
break;
}
}while(scelta!=0);
}