codice:
#include<stdio.h>
#include<stdlib.h>

struct StudPia{
       int codPiani;
       int NPiani;
       int Matr;
       int Esame;};
       
struct Stud {
       int Matr;
       char Cogn[15];
       char Nome[10];
       int Giorno;
       int Mese;
       int Anno;
       int AnCo;
       char Reca[40];
       char email[50];
       int Studi;};
      
struct Ins {
       int CD_Ins;
       char Nome[40];
       int Anno;
       int Sem;
       int CFU;
       int Prop;};
       
void Piano();
int controlloMatr(int Matricola,FILE *Studenti,int Codice,struct Stud bianca);
int controlloEsame(FILE *Insegnamento,struct Ins bianca2,int Esa,int CFUV);

int controlloMatr(int Matricola,FILE *Studenti,int Codice,struct Stud bianca)
{
       if ((Studenti = fopen("Studente.dat", "rb+")) == NULL){
       printf("\nNon posso aprire il file di input.\n");}                   
       else
           
           printf("Dammi la matricola da cercare\n");
              scanf("%d",&Matricola);
              fseek(Studenti, (Matricola-1)*sizeof(struct Stud), SEEK_SET);
              fread(&bianca, sizeof(struct Stud),1,Studenti);
              if(bianca.Matr!=0){
                                 Codice=bianca.Studi;}
              else
                  printf("La Matricola non esiste\n");
       
       fclose(Studenti);

return Matricola,Codice;
}

int controlloEsame(FILE *Insegnamento,struct Ins bianca2,int Esa,int CFUV)
{
 if ((Insegnamento = fopen("Insegnamenti.dat", "rb+")) == NULL)
    printf("\nNon posso aprire il file di input.\n");                         
 else
     printf("Immetti l'esame che vuoi sostenere\n");
     scanf("%d",&Esa);
     fseek(Insegnamento, (Esa-1)*sizeof(struct Ins), SEEK_SET);
     fread(&bianca2, sizeof(struct Ins),1,Insegnamento);
     if(bianca2.CD_Ins!=0){
                  CFUV=bianca2.CFU;
                  printf("%d%d",CFUV,bianca2.CFU);}
     else
         printf("L'insegnamento non esiste\n");   
fclose(Insegnamento);

return CFUV;
}

void Piano()
{
     FILE *Piani;
     int i;
     struct StudPia bianca3={0,0,0,0};
     if ((Piani=fopen("Piani Studio.dat","wb+"))==NULL){
        printf("non se po apri il file\n");}
     else{
          for(i=0;i<20;i++){
                          fwrite(&bianca3, sizeof(struct StudPia),1,Piani);}
     fclose(Piani);}}
     
void Creazione()
{
 FILE *Studenti;
 FILE *Insegnamento;
 FILE *Piani;
 struct StudPia bianca3={0,0,0,0};
 struct Ins bianca2={0,"",0,0,0,0};
 struct Stud bianca={0,"","",0,0,0,0,"",""};
 int scelta,Matricola,Esa,propedeutico,Codice,i,CFU,CFUV;
 scelta=Matricola=Esa=propedeutico=Codice=i=CFU=CFUV=0;
 do{
    controlloMatr(Matricola,Studenti,Codice,bianca);
    if(Codice!=0)
                    do{
                       controlloEsame(Insegnamento,bianca2,Esa,CFUV);
                       CFU=CFU+CFUV;
                       printf("%d",CFU);
                       }while(CFU<140);
    }while(Matricola!=0);

}                                                             
int main()
{
 int scelta;
    
 while(scelta!=5){
                   printf("\n\n1 Creare un nuovo File Piani di studio 'Attenzione cancellerete quello vecchio");
                   printf("\n2 Cancellare un Piano di studi");
                   printf("\n3 Aggiungere uno Studente");
                   printf("\n4 stampa Piani di studio");
                   printf("\n5 per uscire\n");
                   scanf("%d",&scelta);
                   switch(scelta){ 
                                    case 1:
                                         Piano();
                                         break;
                                          
                                    case 2:
                                         
                                         break;
                                               
                                    case 3:
                                         Creazione();
                                         break;
                                          
                                    case 4:
                                         break;
                                      
                                    case 5:
                                         break;
                                          
                                    default:
                                            printf("La scelta non è corretta\n");
                                            break;}}   
system("PAUSE");}
questo programma e un pezzo di uno piu ampio che sto realizzando solo che ho dei problemi con l return ad esempio quando legge i CFU da un'altro file precedentemente creato dovrebbe passare i CFUV alla funzione principale solo che gli ritorna sempre 0 lo sto esaminando da 1 giorno solo che non riesco a capire dove l'errore qualcuno puo darmi una dritta grazie