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
Grazie in anticipocodice: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; } }![]()


Rispondi quotando