Duda al cerrar un archivo que fclose no pudo cerrar. -

Iniciado por NOB2014, 1 Marzo 2017, 17:02 PM

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

NOB2014

Hola, gente, que tengan un muy buen día. -
La duda es que se debe hacer cuando la función fclose intenta cerrar un archivo y no lo logra, ¿hay alguna manera de informar el error con detalle?, ¿se debe intentar una segunda vez?, ¿que puedo hacer como programador para ayudar a solucionar el problema?. -

#include <stdio.h>
#include <stdlib.h>

int main(int argc,char **argv){
char frase[] = "arequito, centro soguero del pais";
FILE *ptrFrase = NULL;

if(!(ptrFrase = fopen("frase.txt", "w"))){
printf( "\n Error al abrir %s Para escribir. Finaliza el programa.", frase );
exit(1);
}

fprintf(ptrFrase, "%s", frase);

if( fclose( ptrFrase )!=0){
printf( "\n No se ha podido cerrar el fichero %s.", frase );
}

return EXIT_SUCCESS;
}
//https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Manejo_de_archivos#fprintf

Es todo por el momento, espero que se entienda cuál es mi desconocimiento. -
Saludos.
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

AnthonyS

Buenas noches,tras haber leído el tema te dejo una solución a tu dilema,espero que con esto te ayude.

El código y la explicación :


#include <stdio.h>
#include <stdlib.h>

int main(int argc,char **argv){
char frase[] = "arequito, centro soguero del pais";
FILE *ptrFrase = NULL;

if(!(ptrFrase = fopen("frase.txt", "w"))){
printf( "\n Error al abrir %s Para escribir. Finaliza el programa.", frase );
exit(1);
}

fprintf(ptrFrase, "%s", frase);
if(fclose( ptrFrase ) == EOF){ /*Fijate que según el link de documentacion "wikilibros.com",se explica que fclose devuelve
                                0 si se cierra correctamente, y en caso contrario devuelve EOF,por lo que si
                                devuelve EOF,es cuando se tiene que entrar en este bucle.
                                    Con esto se comprueba si falla o no,ya que mostraria la frase de abajo si no hubiera
                                        logrado cerrarlo correctamente.*/
printf( "\n No se ha podido cerrar el fichero\n");
system("PAUSE");
}

return EXIT_SUCCESS;
}



Un saludo.

Anthony.

NOB2014

Hola, AnthonyS.
Muchas gracias por ocuparte del tema, creo que no entendiste bien mis inquietudes. -
¿A cuál de estas 3 preguntas respondes con tu post?
Citarhay alguna manera de informar el error con detalle?, ¿se debe intentar una segunda vez?, ¿que puedo hacer como programador para ayudar a solucionar el problema?. -

Gracias nuevamente. -
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-