Grazie innanzitutto per la pronta risposta.
Ho modificato un po' il programma, non so se ho pasticciato un po' aggiungendo puntatori doppi anche alle funzioni stampa.
Adesso comunque dopo aggiungiStudenti nel main va avanti alla funzione stampaStudente, però stampa la matricola relativa allo studente immesso ma non la lista dei voti che ho inserito.
Potresti aiutarmi anche qui a farmi capire dove sbaglio? Ti ringrazio.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct nodoEsame{
int voto;
struct nodoEsame *next;
}nodoEsame;
typedef struct nodoStudente{
int matricola;
nodoEsame *voti;
struct nodoStudente *next;
}nodoStudente;
void aggiungiEsame(nodoEsame **le){
int voto;
char risposta;
do{
printf("Inserire il voto dell'esame: ");
scanf("%d", &voto);
fflush(stdin);
nodoEsame *nuovoEsame;
nuovoEsame=(nodoEsame*)malloc(sizeof(nodoEsame));
nuovoEsame->voto=voto;
nuovoEsame->next=*le;
printf("Vuoi inserire un altro voto?[Y/N]");
scanf("%c", &risposta);
fflush(stdin);
}while(risposta=='y' || risposta == 'Y');
}
void aggiungiStudente(nodoStudente **ls, int matricola){
nodoStudente *nuovoStudente;
nuovoStudente=(nodoStudente*)malloc(sizeof(nodoStudente));
nuovoStudente->matricola=matricola;
nuovoStudente->voti=NULL;//Lista dei voti inizialmente vuota
aggiungiEsame(&nuovoStudente->voti);
nuovoStudente->next=*ls;
*ls=nuovoStudente;
}
void stampaEsame(nodoEsame **listaE){
nodoEsame *elem;
elem=*listaE;
while(elem!=NULL){
printf("%d", elem->voto);
elem=elem->next;
}
}
void stampaStudente(nodoStudente **listaS){
nodoStudente *elem;
elem=*listaS;
while(elem!=NULL){
printf("%d", elem->matricola);
printf("Voti esami: \n");
stampaEsame(&elem->voti);
elem=elem->next;
}
}
int main(){
int matr, voto;
nodoStudente *temp;
temp=NULL;
printf("Inserisci il numero di matricola dello studente: \n");
scanf("%d", &matr);
fflush(stdin);
aggiungiStudente(&temp, matr);
stampaStudente(&temp);
system("PAUSE");
return 0;
}