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 graziecodice:#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");}