Probabilmente perché il cognome dello studente non è il primo in "registro.txt" e quindi il ciclo interno, quello degli insegnanti, posiziona il cursore alla fine del file e non fa verificare mai la condizione dell' if. Di primo acchito mi sembrerebbe questo, ma non ne assicuro la certezza.

Per risolvere potresti fare il ciclo più interno se e solo se il cognome inserito corrisponde a quello scansionato da "registro.txt".

Scusa la mia povertà espressiva.

P.s. come dice Oregon occhio a non richiamare il main! (basta far "ritornare" la funzione per tornare al main).