Linguaggio predefinito C, programma che uso DevC++.
Sto sviluppando un nuovo esercizio che chiede i seguenti punti:
1. L'autore deve far stampare a schermo il proprio nome e cognome che devono essere conservati in opportuni campi di una struttura;
2. Caricare in RAM tutte le eventuali informazioni già presenti in un file prefissato (pagelle.txt);
3. Inserire un nuovo studente nell'elenco inserendo nome, cognome, classe e voti ottenuti in pagella (codificati con unsigned int) (Le materie sono: italiano, matematica, informatica, religione);
4. Visualizza a schermo tutti gli elementi presenti nell'elenco;
5. Cerca studente per cognome (richiedere il cognome, cercare il cognome nel menù, stampare a schermo i dati di tutti gli studenti con quel cognome;
6. Salvare una pagella su un file (richiedere cognome dello studente, visualizza a schermo i risultati, salvare su un file con nome a piacere).

Ho già sviluppato il 1° e 3° punto, riesco a compilare, il programma parte, ma dopo che ho inserito nome, cognome, classe es i voti, non mi salva i dati nel file ed il programma si blocca.
Ecco il codice:
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_CHARS 50
#define MAX_ELEM 100
#define FILE_PRED "pagelle.txt"

  struct studente {
         char nome [MAX_CHARS];
         char cognome [MAX_CHARS];
         } io={"Pinco","Pallino"};
  
  struct pagelle {
         char nome [MAX_CHARS];
         char cognome [MAX_CHARS];
         char classe [MAX_CHARS];
         int italiano [2];
         int matematica [2];
         int informatica [2];
         int religione [2];
         };

  //PROTOTIPI
  int inserisci (struct pagelle elenco_pagelle[], int n);
      

  
int main(int argc, char *argv[])                  // Inizio programma
{
  struct pagelle elenco_pagelle [MAX_ELEM];
  
  printf("\nAutore del programma:");              //Stampa i dati dell'autore
  printf("\n-------------------------");
  printf("\n Nome:    %s\n Cognome: %s",io.nome,io.cognome);
  printf("\n-------------------------");
  
  int n=0;
  int scelta;
  
  do {
      printf("\n Seleziona cio' che desideri fare:");
      printf("\n 1. Inserisci nuovo studente");
      printf("\n 2. ");
      printf("\n 3. ");
      printf("\n 4. ");
      printf("\n 0. Esci");
      printf("\n\nScegli: ");
      scanf("%d",&scelta);
      
      switch (scelta) {
                  case 1: {
                       n=inserisci (elenco_pagelle,n);
                       break;
                       }
                  case 0: {
                       exit(0);
                       break;
                       }
      }
  }
    while(scelta!=0);
    system("pause");
    return 0;


}

  int inserisci (struct pagelle elenco_pagelle[], int n) {

      if(n>MAX_ELEM) {
         printf("Non puoi aggiungere altri studenti\n");
         system("pause");
         return n;
         }
      
      printf("\nNon iserire spazi e/o lettera accentate\n");
      printf("\nInserisci nome: ");
      scanf("%s",elenco_pagelle[n].nome);
      printf("\nInserisci cognome: ");
      scanf("%s",elenco_pagelle[n].cognome);
      printf("\nInserisci classe: ");
      scanf("%s",elenco_pagelle[n].classe);
      printf("\nInserisci voto italiano: ");
      scanf("%u",elenco_pagelle[n].italiano);
      printf("\nInserisci voto matematica: ");
      scanf("%u",elenco_pagelle[n].matematica);
      printf("\nInserisci voto informatica: ");
      scanf("%u",elenco_pagelle[n].informatica);
      printf("\nInserisci voto religione: ");
      scanf("%u",elenco_pagelle[n].religione);
      printf("\n\n");
      
      FILE*fp=fopen(FILE_PRED,"a");
      if(fp==NULL) {
           printf("Impossibile salvare!\n");
                   }
      else {
           fprintf(fp,"%s %s %s %u %u %u %u",elenco_pagelle[n].nome,elenco_pagelle[n].cognome,elenco_pagelle[n].classe,elenco_pagelle[n].italiano,elenco_pagelle[n].matematica,elenco_pagelle[n].informatica,elenco_pagelle[n].religione);
           printf("------------SALVATO------------\n\n");
           fclose(fp);
           }
      return n;
  }
Cos'è che non va?
Per il numero 2 dell'esercizio non so come devo fare. Se potete dirmi come fare bene, ma prima bisogna risolvere il problema dell'inserimento di un nuovo studente.