Ho un albero binario i cui nodi contengono una struttura formata da 4 dati (cognome,nome,indirizzo,telefono). In un file li ho salvati in sequenza, una riga dopo l'altra, e quindi ho un ciclo che ogni 4 inserisce in una struct e passa al metodo inserisci, che inserisce nell'albero.
L'ultimo file viene inserito due volte, ho già provato a inserire dappertutto l'istruzione if(feof(f)) break; senza ottenere alcun risultato positivo. Dove lo metto? Non valgono le parolacce

codice:
int leggi_file(char *fname, TREE *p_T) {
 int flag=0, c1;

 SCHEDA sc;
 FILE *f;

 f=fopen(fname, "r");

 if( f==NULL )
 {
   printf( "Impossibile aprire %s in lettura\n",fname);
   return flag;
 }
 else
 {  
     char buf[50];
     
     while(!feof(f)){
          
        c1=0;
        do
        {  
           if( fgets(buf,50,f)!= NULL ) 
           {          
             switch(c1) 
             {
               case 0:
                 strcpy(sc.cognome,buf);
                 break;
               case 1:
                 strcpy(sc.nome,buf);
                 break;
               case 2:
                 strcpy(sc.indirizzo,buf);
                 break;
               case 3:
                 strcpy(sc.telefono,buf); 
                 break;
                 
    
             }
              c1++; 
              
           }
           if(feof(f))
             break;
        }while(c1<4);

        if(inserisci(&(*p_T),sc))
          flag=1;
        else
         flag=0;
         
              
     }
     
   if( fclose(f)==EOF ) 
   {
     printf("Errore in chiusura file\n"); 
     flag=0;
     
   }
   flag=1; 
   
   return flag;
 }
}
Grazie in anticipo