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