No te creo eso de q te funciona o no decias la verdad en la primera ocasion.....ahi lo q estas haciendo es escribir en un fichero en vez de leerlo, de paso, si este existe antes ce llamar el fopen, este sera vaciado por el "w" q tienes en el modo de apertura
Código:
void mostrar_fichero()
{ char texto;
FILE *f=fopen("datos.txt", "r");
if(!f)
{ perror("no se pudo abrir datos.txt");
return;
}
texto=fgetc(f);
while(texto != EOF)
{ fputc(texto,stdout);
texto=fgetc(f);
}
fclose(f);
}