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.
#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:
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.
No veo donde se inicializa el archivo (FILE *)
Hace falta igualar el apuntador, algo asi como:
f = fopen("f.txt", "w");
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!
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).
int main ()
{
FILE* archivo = 0;
abrArch(archivo);
...
/*archivo seguira siendo 0 en este punto*/
void abrArch(FILE* f)
{
f = fopen("f.txt", "w");
Gracias, aplique las dos cosas y funciono.
El archivo se abrio correctamente!
El archivo se cerro exitosamente!