Título: Archivos (c) Publicado por: UsuarioZ en 17 Marzo 2021, 04:00 am Hola, estaba probando abrir y cerrar un archivo, con fopen y fclose, pero no se muestran los printf al cerrar, ¿Qué estoy haciendo mal?
Gracias de antemano. Código: #include <stdio.h> #include <string.h> #include <errno.h> void abrArch(FILE* f); void cerrArch(FILE* f); int main () { FILE* archivo; abrArch(archivo); cerrArch(archivo); return 0; } void abrArch(FILE* f) { fopen("f.txt", "w"); if(f != NULL) printf("El archivo se abrio correctamente!\n"); else printf("Error al intentar abrir el archivo.\n"); } void cerrArch(FILE* f) { if(fclose(f) == 0) printf("El archivo se cerro exitosamente!\n"); else printf("El archivo no pudo ser cerrado\n"); } Salida: Código: El archivo se abrio correctamente! PD: Disculpen por la categoría, recién la veo y no se como cambiarla. Edit: Ya la cambiaron, gracias. Título: Re: Archivos (c) Publicado por: AlbertoBSD en 17 Marzo 2021, 05:34 am No veo donde se inicializa el archivo (FILE *)
Hace falta igualar el apuntador, algo asi como: Código Si eso si soluciona tu problema, el problema era que estabas mandando a cerrar un FILE* sin inicializar y el programa se cerraba sin siquiera termianr de evaluar el if Saludos! Título: Re: Archivos (c) Publicado por: Eternal Idol en 17 Marzo 2021, 08:53 am AlbertoBSD esta en lo correcto; agrego un par de detalles, si queres que abrArch cambie el valor de, en este caso, la variable archivo tenes que usar doble puntero (o referencia en C++) y la comparacion que estas haciendo en cerrArch no funcionara por la misma razon (aunque le asignes el resultado del fopen a f en la funcion abrArch eso sera unicamente una variable de ambito local y archivo continuara teniendo el valor que tenia antes de llamar a abrArch).
Código
Título: Re: Archivos (c) Publicado por: UsuarioZ en 17 Marzo 2021, 09:43 am Gracias, aplique las dos cosas y funciono.
Código: El archivo se abrio correctamente! El archivo se cerro exitosamente! |