Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: NOB2014 en 1 Marzo 2017, 17:02 pm



Título: Duda al cerrar un archivo que fclose no pudo cerrar. -
Publicado por: NOB2014 en 1 Marzo 2017, 17:02 pm
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?. -
 
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(int argc,char **argv){
  5. char frase[] = "arequito, centro soguero del pais";
  6. FILE *ptrFrase = NULL;
  7.  
  8. if(!(ptrFrase = fopen("frase.txt", "w"))){
  9. printf( "\n Error al abrir %s Para escribir. Finaliza el programa.", frase );
  10. exit(1);
  11. }
  12.  
  13. fprintf(ptrFrase, "%s", frase);
  14.  
  15. if( fclose( ptrFrase )!=0){
  16. printf( "\n No se ha podido cerrar el fichero %s.", frase );
  17. }
  18.  
  19. return EXIT_SUCCESS;
  20. }
  21. //https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Manejo_de_archivos#fprintf
  22.  
Es todo por el momento, espero que se entienda cuál es mi desconocimiento. -
Saludos.


Título: Re: Duda al cerrar un archivo que fclose no pudo cerrar. -
Publicado por: AnthonyS en 1 Marzo 2017, 19:45 pm
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 :

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(int argc,char **argv){
  5. char frase[] = "arequito, centro soguero del pais";
  6. FILE *ptrFrase = NULL;
  7.  
  8. if(!(ptrFrase = fopen("frase.txt", "w"))){
  9. printf( "\n Error al abrir %s Para escribir. Finaliza el programa.", frase );
  10. exit(1);
  11. }
  12.  
  13. fprintf(ptrFrase, "%s", frase);
  14. if(fclose( ptrFrase ) == EOF){ /*Fijate que según el link de documentacion "wikilibros.com",se explica que fclose devuelve
  15.                                 0 si se cierra correctamente, y en caso contrario devuelve EOF,por lo que si
  16.                                 devuelve EOF,es cuando se tiene que entrar en este bucle.
  17.                                     Con esto se comprueba si falla o no,ya que mostraria la frase de abajo si no hubiera
  18.                                         logrado cerrarlo correctamente.*/
  19. printf( "\n No se ha podido cerrar el fichero\n");
  20. system("PAUSE");
  21. }
  22.  
  23. return EXIT_SUCCESS;
  24. }
  25.  
  26.  

Un saludo.

Anthony.


Título: Re: Duda al cerrar un archivo que fclose no pudo cerrar. -
Publicado por: NOB2014 en 1 Marzo 2017, 20:11 pm
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?
Citar
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?. -

Gracias nuevamente. -
Daniel