Salve a tutti. Ho scritto questo codice per creare un programma seguendo i punti di un esercizio.
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_CHARS 50
#define MAX_ELEM 200
#define FILE_PRED "registro_cont.txt"

  struct studente {             
         char nome[MAX_CHARS];
         char cognome[MAX_CHARS];
         } io={"Pinco","Pallino"};
         
  struct contribuenti {
         char nome[MAX_CHARS];
         char cognome[MAX_CHARS];
         char codice_fiscale[16];
         char indirizzo[MAX_CHARS];
         double reddito;    
         };
         
  //PROTOTIPI
  int inserisci (struct contribuenti elenco_contribuenti[], int n);     
  int media_reddito (struct contribuenti elenco_contribuenti[], int n);
  int visualizza (struct contribuenti elenco_contribuenti[], int n);
  int salva_elenco (struct contribuenti elenco_contribuenti[], int n);
  int cerca_codice_fiscale (struct contribuenti elenco_contribuenti[], int n);
  int cerca_reddito(struct contribuenti elenco_contribuenti[], int n); 
           
  //Inizio programma
int main(int argc, char *argv[])                                     
{
  struct contribuenti elenco_contribuenti[MAX_ELEM];              //Stampa i dati dell'autore
      
         printf(" Autore del programma:\n");
         printf("------------------------------\n");
         printf(" Nome:      %s\n Cognome:   %s\n",io.nome,io.cognome);
         printf("------------------------------\n");
  
 

  
  int scelta;
  int n=0;
    
  do {
       printf("\nScegli dall'elenco l'opzione che desideri fare.\n");    //Menù principale
       printf(" 1: Aggiungere nuovo individuo\n");
       printf(" 2: Calcola il reddito medio dell'elenco\n");
       printf(" 3: Visualizza la lista\n");
       printf(" 4: Salva elenco su un file\n");
       printf(" 5: Cerca per codice fiscale\n");
       printf(" 6: Cerca per fascia di reddito\n");
       printf(" 0: Uscita\n\n");
       printf("Scelta: ");
       scanf("%d", &scelta);
              switch(scelta){
                        case 1:{
                               n=inserisci (elenco_contribuenti,n);   
                               break;}
                        case 2:{
                               FILE*fp=fopen(FILE_PRED,"r");
                               if(fp==NULL) {printf("C'e' stato un errore\n");}
                               while (feof(fp)==0)
                               {
                                 fscanf(fp,"%s %s %s %s %lf", elenco_contribuenti[n].nome,elenco_contribuenti[n].cognome,elenco_contribuenti[n].codice_fiscale,elenco_contribuenti[n].indirizzo,elenco_contribuenti[n].reddito);
                                   n++;
                                   }
                                   int media=media_reddito(elenco_contribuenti, n);
                               break;}
                        case 3:{
                               n=visualizza (elenco_contribuenti,n);
                               break;}
                        case 4:{
                               n=salva_elenco (elenco_contribuenti,n);
                               break;
                               }
                        case 5:{
                               n=cerca_codice_fiscale (elenco_contribuenti,n);
                               break;
                               }
                        case 6:{
                               n=cerca_reddito (elenco_contribuenti,n);       
                               break;
                               }
                        case 0:{exit(0);
                               break;}
                        }                        
     } 
     while(scelta!=0);
     system("pause");
     return 0;
  

}

  int inserisci (struct contribuenti elenco_contribuenti[], int n) {            //Serve per inserire un nuovo individuo
      if (n>=MAX_ELEM)
          printf("Non puoi aggiungere altri individui\n");

      printf("\nNon iserire spazi e/o lettere accentate\n");
      printf("\nInserisci nome: ");
      scanf("%s",elenco_contribuenti[n].nome);                        
      printf("\nInserisci cognome: ");
      scanf("%s",elenco_contribuenti[n].cognome);
      printf("\nInserisci codice fiscale: ");
      scanf("%s",elenco_contribuenti[n].codice_fiscale);
      printf("\nInserisci indirizzo: ");
      scanf("%s",elenco_contribuenti[n].indirizzo);
      printf("\nInserisci reddito: ");
      scanf("%lf",elenco_contribuenti[n].reddito);  
      printf("\n\n");
                                
      FILE*fp=fopen(FILE_PRED,"a");
      if(fp==NULL) {
         printf("Impossibile salvare!\n");
         }
      else {
         fprintf(fp,"%s %s %s %s %lf\n",elenco_contribuenti[n].nome,elenco_contribuenti[n].cognome,elenco_contribuenti[n].codice_fiscale,elenco_contribuenti[n].indirizzo,elenco_contribuenti[n].reddito);
         printf("-----------SALVATO----------\n\n");
         fclose(fp);
         }
       return n;                    
 }

  int media_reddito (struct contribuenti elenco_contribuenti[], int n) {        //Serve per calcolare la media dei redditi
      int i;
      double media=0.0;
      
      for (i=0; i<n; i++)
          media=media+elenco_contribuenti[i].reddito;
      media=media/n;
      
      return media;
  }

  int visualizza (struct contribuenti elenco_contribuenti[], int n) {           //Serve per visualizzare la lista dell'elenco
      int i;
      int scelta;
      
      FILE*fp=fopen(FILE_PRED,"r");
      if(fp==NULL) {
         printf("C'e' stato un errore nella lettura del file\n");
         return (scelta);
         }
      else {
         printf("Ecco la lista degli individui presenti in elenco:\n");
         printf(" %s  %s  %s  %s  %lf\n",elenco_contribuenti[i].nome,elenco_contribuenti[i].cognome,elenco_contribuenti[i].codice_fiscale,elenco_contribuenti[i].indirizzo,elenco_contribuenti[i].reddito);
         return i;
      }
      fclose(fp);
  }

  int salva_elenco (struct contribuenti elenco_contribuenti[], int n) {         //Serve per salvare i dati su un file
      int i;
      int scelta;
      char caratteri [MAX_CHARS];
      
      printf("Inserisci il nome del file su cui vuoi salvare (.txt): ");
      scanf("%s",caratteri);
      
      FILE*fp=fopen(caratteri,"w");
      if(fp==NULL) {
         printf("Errore nel salvataggio\n");
         return (scelta);
         }
      else {
         for(i=0;i<n;i++) {
         fprintf(fp,"%s %s %s %s %lf\n",elenco_contribuenti[i].nome,elenco_contribuenti[i].cognome,elenco_contribuenti[i].codice_fiscale,elenco_contribuenti[i].indirizzo,elenco_contribuenti[i].reddito);
            }
         }
      printf("----------SALVATO----------\n");
      fclose(fp);
  }

  int cerca_codice_fiscale (struct contribuenti elenco_contribuenti[], int n) { //Serve per cercare un individuo in base al codice fiscale
      int i;
      char cerca[MAX_CHARS];
      
      printf("Inserisci il codice fiscale: ");
      scanf("%s",cerca);
      printf("\n");
      
      for(i=0;i<n;i++) {
          if(strcmp(cerca,elenco_contribuenti[i].codice_fiscale)==0)
             printf("%s %s %s %s %lf",elenco_contribuenti[i].nome,elenco_contribuenti[i].cognome,elenco_contribuenti[i].codice_fiscale,elenco_contribuenti[i].indirizzo,elenco_contribuenti[i].reddito);
             
         }

  }

  int cerca_reddito(struct contribuenti elenco_contribuenti[], int n) {         //Serve per cercare un individuo in base al reddito
      int i;
      int trovati=0;
      int min;
      int max;
      
      printf("Inserire il reddito minimo: ");
      scanf("%d",&min);
      printf("\nInserire il reddito massimo: ");
      scanf("%d",&max);
      printf("\nRisultati trovati: \n");
      
      for(i=0;i<n;i++) {
          if(elenco_contribuenti[i].reddito > min && elenco_contribuenti[i].reddito < max) {
             printf("%s %s %s %s %lf",elenco_contribuenti[i].nome,elenco_contribuenti[i].cognome,elenco_contribuenti[i].codice_fiscale,elenco_contribuenti[i].indirizzo,elenco_contribuenti[i].reddito);
             trovati++;
            }
         }
      return (trovati);
  }
I punti dell'esercizio sono quelli delle "printf" del menù principale.
Chiedo se qualcuno può controllare questo codice e dirmi gli errori, in quanto così com'è il compilatore non mi da alcun errore/warning, ma quando parte e scelgo alcune opzioni dal menù, queste non funzionano a dovere.
Grazie per l'aiuto.