C/Visual C - Fopen en una función

 
Vista:

Fopen en una función

Publicado por mocoyn (4 intervenciones) el 15/01/2011 18:40:18
Hola

Estoy intentando crear una función para abrir ficheros, pero no se porqué no me devuelve como variable el fichero abierto. Os dejo el código de como lo hago, por si alguien, por favor, me puede ayudar.

Explicar que el funcionamiento normal, es la llamada desde read_file -> open_file y que en el log que tengo se me muestra correctamente las rutas recibidas en la variable path.

int open_file(const char * path, char * mode, FILE *fich)
{
dprintf("\nVamos a abrir %s", path);
fich=fopen(path,"r");
if (fich==NULL)
return -1; //Error al abrir el fichero
return 0;
}

int read_file(const char * path, char * mode)
{
int err;
FILE *fich=NULL;

dprintf("\nVamos a leer del fichero %s", path);
//Abrimos el fichero
err=open_file(as, path, "r",fich);
if (err==-1){
dprintf("\nError al abrir el fichero %s", path);
return -1;
}
...
}

Gracias y un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Fopen en una función

Publicado por Tom (619 intervenciones) el 15/01/2011 20:05:13
Por favor, compila y ejecuta esto:

#include <stdio.h>
#include <string.h>

int main() {
char *pepe = NULL;

pierdo_el_tiempo(pepe);
printf("No lo entiendo. pepe: %s\n", pepe);
}
/* */
int pierdo_el_tiempo(char *pepe) {
pepe = strdup("no, no, asi no es");
printf("No lo entiendo, aqui pepe es: %s\n", pepe);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Fopen en una función

Publicado por mocoyn (4 intervenciones) el 15/01/2011 21:19:53
Tom, creo que no me he explicado bien, mi idea o lo que realmente quiero, es que la variable fich que apunta a un fichero, apunte al mismo fichero para ambas funciones (open_file y read_file).

Te detallo más con un ejemplo
Inicialmente (dentro de read_file) -> la variable fich es creada con valor igual a NULL
Posteriormente se pasa la variable fich a la función open_file con el valor NULL que tenía inicialmente.
A continuación, dentro de la función open_file se modifique el valor de la variable fich apuntando por ejemplo a un fichero llamado "pepe.txt"
Y al retornar, a la función read_file, la variable fich sigue apuntando al fichero "pepe.txt" (ESTA PARTE ES LA QUE NO CONSIGO CON EL CÓDIGO ADJUNTO)

Vuelvo a repetir el código
Código:

int open_file(const char * path, char * mode, FILE *fich)
{
dprintf("\nVamos a abrir %s", path);
fich=fopen(path,"r");
if (fich==NULL)
return -1; //Error al abrir el fichero
return 0;
}

int read_file(const char * path, char * mode)
{
int err;
FILE *fich=NULL;

dprintf("\nVamos a leer del fichero %s", path);
//Abrimos el fichero
err=open_file(as, path, "r",fich);
if (err==-1){
dprintf("\nError al abrir el fichero %s", path);
return -1;
}
...
}

Espero que alguien pueda ayudarme.

Gracias y un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Fopen en una función

Publicado por Tom (619 intervenciones) el 16/01/2011 17:11:21
Si te había entendido ...
Y lo que yo pretendía es que te dieras cuenta de que el problema real está en que no sabes qué son las variables puntero en c.

Hay muchos tutoriales de c. Puedes empezar mirando este dedicado a punteros:

http://www.clubdesarrolladores.com/articulos/mostrar/24-tutorial-de-punteros
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar