Ciao a tutti, vi espongo un problema abbastanza strano. Ho scritto un programma in C che fa un po' di cose e poi stampa una classifica (ordine decrescente del punteggio). La stampa viene fatta sia su console che su un file chiamato classifica.txt.
Su un PC con windows XP tutto funziona perfettamente.
Su un portatile con Ubuntu 11.10 la stampa della classifica è giusta a console e rovesciata su file.
Cambia qualcosa da win a linux nella gestione file?
Comunque posto il codice della stampa. Non credo sia l'approccio ottimale...ma funziona! O almeno dovrebbe...
void ordinata(clas head) {
FILE* fp;
fp=fopen("classifica.txt", "a");
if(head==NULL) return;
clas t=head;
clas max=t;
t=t->next;
if(t==NULL) {
fprintf(fp, "%s %s %d\n", max->nome, max->cognome, max->netto);
printf("%s %s %d\n", max->nome, max->cognome, max->netto);
return;
}
while(t!=NULL) {
if(t->netto > max->netto) max=t;
t=t->next;
}
fprintf(fp, "%s %s %d\n", max->nome, max->cognome, max->netto);
printf("%s %s %d\n", max->nome, max->cognome, max->netto);
if(head==max) {
head=head->next;
ordinata(head);
return;
}
clas k=head;
while(k->next!=max) k=k->next;
k->next=max->next;
free (max);
t=head;
max=head;
if(head!=NULL) ordinata(head);
else return;
}
preciso che clas è un puntatore ad un elemento di tipo struct classifica.
Aspetto informazioni!