Salve a tutti il mio programma è molto semplice devo prendere da file una lista di professori con dei numeri caricarla nel programma riordinarla e eliminare quelli che si ripetono.

Questo è il mio file txt

chianese
3321
moscato
3345
picariello
2134
moscato
3345

Questa è la mia libreria:

codice:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstring>


using namespace std;


#define STR_MAX 100
#define VET_MAX 100


typedef char Stringa [STR_MAX];


typedef struct Lista{
    
    Stringa Cognome;
    int Numero;
    Lista *next;
    
}Professore;


typedef Lista* Pnodo;
typedef Professore Docenti [VET_MAX];


void carica_file(Stringa, fstream &f, Docenti , int *);
void stampa_file(const Docenti,const int);
void controllo_ordine(Docenti, int);
void confronto(Stringa , Stringa , int *);
void scambio(Docenti, int);
void elimina_uguali(Docenti, int);
void cancella_nodo(Stringa ,int , Pnodo &);


Questa è sono le mie funzioni


codice:
#include "alfabetico.h"


void carica_file(Stringa nome, fstream &f, Docenti professore, int *d){
    
    int i=0;
    
    cout<<"\n Inserisci nome del file che vuoi caricare :";
    cin.getline(nome,STR_MAX-1, '\n');
    f.open(nome, ios::in);
    if(!f){
        
        cout<<"\n Errore durante l'inserimento del nome del file...";
        exit(1);
        
    }else{
        
        while(!f.eof()){
            
            f>>professore[i].Cognome;
            f>>professore[i].Numero;
            i++;
        }
        i--;
    }


    *d=i;    
    f.close();
}


void stampa_file(const Docenti insegnanti,const int dimensione){
    
    cout<<"\n Stampo il file :\n";
    for(int i=0; i<dimensione; i++){
        
        cout<<insegnanti[i].Cognome<<endl;
        cout<<insegnanti[i].Numero<<endl;
        
    }
    
}


void controllo_ordine( Docenti professori, int size){
    
    Professore scambio;
    int risult, cont;


    
    for(int i=0; i<size; i++){
        
        for(int j=i+1; j<size; j++){


            risult=strcmp(professori[i].Cognome, professori[j].Cognome);
            
                if(risult>0){
                
                scambio=professori[i];
                professori[i]=professori[j];
                professori[j]=scambio;
                
                    }else{
        
                cont++;
                risult=cont;
        
            }
        }
            
    }
    
    if(risult==size){
        
        cout<<"\n L'elenco è già ordinato alfabeticamente \n";
        
    }
    
    stampa_file(professori, size);
    cout<<"\n Controllo se ci sono elementi uguali: \n";
    elimina_uguali(professori, size);
    stampa_file(professori, size);
    
}


void elimina_uguali(Docenti prof, int s){
    
Pnodo L1;
int ris;
    
for(int i=0; i<s; i++){
        
    for(int j=i+1; i<s; j++){
    
        ris=strcmp(prof[i].Cognome, prof[j].Cognome);
        
            if(ris==0){
            
                cancella_nodo(prof[j].Cognome,j, L1);
                            
            }
                    
        }
                
    }    
            
}
        
void cancella_nodo(Stringa insegnante,int j, Pnodo &n1){




Pnodo Temp;
        
    if(n1!=NULL){


        if(n1->Cognome==insegnante){
                                
            Temp=n1;
            n1=n1->next;
            delete Temp;
            }else {
            
                cancella_nodo(insegnante, j, n1);
            
            }
        }
}
Questo è il mio main:

codice:
#include "alfabetico.h"


int main(){
    
    Stringa nome_file;
    fstream file;
    Docenti dati;    
    int dim;
    
    
    carica_file(nome_file, file, dati, &dim);
    stampa_file(dati, dim);
    controllo_ordine(dati, dim);


}
Mi compila tutto non mi da errori però mi succede questo:
Immagine.png
2.png

Quando invece carico un altro txt qualunque esso sia non me lo carica per esempio ho caricato questo txt chiamato professore.txt(quello vecchio si chiamava professori.txt lo so lo so ho molta fantasia) e non va:

rossi
3321
di lorenzo
3345
ferrante
2134
di lorenzo
3345

Mi stampa questo perchè?

2.png

Il trattino lampeggia all'infinito e rimane così perchè? Cosa c'è di sbagliato nel mio codice?