Ho provato a farlo io, e mi pare funzioni:
codice:
/* semplice lettura e scrittura da file a pila.. */
#include <stdio.h>
#include <string.h>
struct elemento {
char *elemento;
struct elemento *punt;
};
void crea (struct elemento **);
void aggiungi (struct elemento **, char *);
void visualizza (struct elemento *);
int main (void) {
char *path ="michele.mf", char_tmp[480];
struct elemento *lista;
FILE *fp = fopen (path, "r");
if (!fp) {
printf ("File non trovato : %s \n", path);
return (-1);
}
crea (&lista);
while (!feof (fp)) {
fgets (char_tmp, sizeof (char_tmp), fp);
aggiungi (&lista, char_tmp);
}
visualizza (lista);
}
void crea (struct elemento **e) {
*e = NULL;
}
void aggiungi (struct elemento **e, char *str) {
unsigned int lunghezza;
struct elemento *p;
p = (struct elemento *) malloc (sizeof (struct elemento));
lunghezza = strlen (str);
p -> elemento = (char *) malloc (lunghezza + 1);
strncpy (p -> elemento, str, lunghezza + 1);
p -> punt = *e;
*e = p;
}
void visualizza (struct elemento *e) {
if (!e)
printf ("Nessun elemento è presente nella pila.\n");
else
while (e) {
printf ("%s", e -> elemento);
e = e -> punt;
}
}
Ovviamente ho usato uno stack per rendere più veloce da scrivere e più snello il codice.
Quindi il file te lo scrive al contrario.
Dimmi se ti è servito, ciao!