La verdad es que no sé si este es el lugar adecuado del foro, si no es así movedlo, por favor.
Veréis, tengo un problema con una práctica (bajo Linux), y el problema no tiene que ver con la práctica sino con el lenguaje de programación elegido (C, la otra opción es ADA).
El problema es que
tengo que abrir un fichero con una función (no puedo hacer fopen directamente en el main), por lo que tengo que pasarlo como parámetro, y después tengo que leer de él a través de otra función, y creo que hay algo que no entiendo, porque no funciona.
Por ejemplo, simplificando lo máximo que he podido:
#include <stdio.h>
void abrir(f)
FILE *f;
{
f = fopen( "fichero.dat", "r" );
}
void leer(f)
FILE *f;
{
printf("%c \n", fgetc(f));
}
main(){
FILE *g;
abrir(g);
leer(g);
}
La función principal abriría el fichero a través de la función "abrir", después "leer" debería leer un caracter de dicho fichero y mostrarlo por pantalla, pero no es así puesto que muestra un caracter al azar.
En el código de la práctica el problema es mayor, pues da un fallo de segmentación.
He hablado con un profesor de otra asignatura y me ha dicho que, seguramente, se deba a que al abrir el fichero dentro de una función, se crea la estructura dentro de la función y, al terminar ésta, desaparece, por lo que acabo teniendo el fichero como un puntero a nada... De ahí que al usar el fichero lea caracteres aleatorios o me dé un fallo de segmentación.
Buff, siento el tostón, siempre me extiendo demasiado intentando detallarlo bien. El caso es que no encuentro nada y no sé cómo solucionarlo, ¿alguna ayudita? Espero no tener que rehacer todo esto en ADA, que llevo 400 líneas escritas
Pues eso, un saludo y muchas gracias.