Ciao a tutti, sto realizzando un programma che tra le altre cose permette di ordinare dei numeri complessi in base alla parte reale degli stessi contenuti in un file di testo, ogni numero complesso del file è allocato dinamicamente in una lista, il mio problema è che adesso il programma compila correttamente ma mi stampa nel file solo l'ultimo dei numeri cancellando tutti gli altri, posto il codice:
codice:
Lista ordina_lista(Lista *p_lista){
FILE *fp, *fn;
int x = 0;
Lista n;
n = (Nodo*)malloc(sizeof(Nodo));
strcpy( n->id, id );
n->reale = reale;
n->immaginario = immaginario;
fp = fopen("lista.txt", "r");
fn = fopen("secondo.txt", "w+");
if(x == 0){
x = 1;
}
while((fscanf(fp,"%s %lg %lg", nodo->id, &nodo->reale, &nodo->immaginario) != EOF) && (nodo->reale < nodo->next->reale)){
nodo = n;
fprintf(fn, "%s %g %g\n", n->id, n->reale, n->immaginario);
nodo->next = nodo;
nodo->next->next = nodo->next;
n = NULL;
}
while((fscanf(fp,"%s %lg %lg", nodo->id, &nodo->reale, &nodo->immaginario) != EOF) &&
(nodo->reale > nodo->next->reale)){
nodo->next = n;
fprintf(fn, "%s %g %g\n", n->id, n->reale, n->immaginario);
nodo->next->next = nodo->next;
n = NULL;
}
if(x == 0) {
printf("\nLa lista è vuota\n\n");
}
fclose(fp);
fclose(fn);
remove("lista.txt");
rename("secondo.txt", "lista.txt");
return 0;
}
Vorrei capire quale passaggio ho sbagliato, grazie