Modifica il codice di apertura del file con:

codice:
    if ((file = fopen("materiali.txt", "r")) == NULL) {
        perror("impossibile aprire il file");
        exit(-1);
    }
in questo modo, in caso di errore nell'apertura del file:

1) il programma termina invece di continuare, evitando quindi di crashare per le successive operazioni di lettura da file che non potrebbero aver luogo;
2) ottieni un messaggio di errore che può darti qualche informazione utile per il debug.

Se l'apertura va a buon fine, l'errore è da ricercare probabilmente nel file e/o nel suo contenuto: sicuro di aprire il file giusto con i dati giusti con la formattazione giusta?