Archivos (c)

Iniciado por UsuarioZ, 17 Marzo 2021, 04:00 AM

0 Miembros y 1 Visitante están viendo este tema.

UsuarioZ

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.

AlbertoBSD

#1
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!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

Eternal Idol

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");
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

UsuarioZ

Gracias, aplique las dos cosas y funciono.


El archivo se abrio correctamente!
El archivo se cerro exitosamente!