View Full Version : [C]TORNARE INDIETRO DI RIGA FILE
CIAO A TUTTI DEVO FARE UN PRGRAMMA C CHE DATO UN FILE ESEPIO
FILE A:
CIAO
DARIO
PINCO
STAMPI NEL FILE C L ULTIMA RIGA DEL FILE A COME PRIMA OVVERO
FILE C:
PINCO
DARIO
CIAO
COME POSSO FARE? DEVE ESSERE OTTIMALE ANCHE SU UN FILE D GROSSE DIMENSIONI
Non scrivere maiuscolo, sul web significa urlare.
Scorri tutto il file carattere riga per riga (fgets) e ti memorizzi l'ultima riga letta e la posizione nel file del primo carattere di quella riga. Se il file è finito hai trovato ciò che devi scrivere in cima.
Per modificare il file devi scrivere un nuovo file con la prima riga in cima ed il contenuto del vecchio file fino alla posizione del primo carattere della riga che hai messo in cima.
credo venga molto naturale un approccio ricorsivo
void reverse_print(FILE *f) {
int lastline = 1;
char s[BUFSIZE];
fgets(s, BUFSIZE, f);
if (!feof(f)) {
reverse_print(f);
lastline = 0;
}
printf("%s", s);
if (lastline)
printf("\n");
}
wingman87
09-05-2010, 02:14
credo venga molto naturale un approccio ricorsivo
void reverse_print(FILE *f) {
int lastline = 1;
char s[BUFSIZE];
fgets(s, BUFSIZE, f);
if (!feof(f)) {
reverse_print(f);
lastline = 0;
}
printf("%s", s);
if (lastline)
printf("\n");
}
Se ho capito bene deve scambiare solo la prima e l'ultima riga, non riscrivere tutte le righe al contrario. Ad ogni modo il tuo programma non funzionerebbe per file molto grandi.
Esatto, esaurirebbe lo stack ;)
Esatto, esaurirebbe lo stack ;)ovvio, ma è anche il modo più efficiente e comodo per stampare al contrario.. dipende da cosa devi fare
comunque in effetti da come ha scritto non deve stampare al contrario, ma invertire la prima e l'ultima riga, quindi il problema non si pone
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.