2011-02-15 14 views
11

considere el siguiente fragmento de código.¿Es necesario cerrar cuando falló Fopen?

{ 
.... 
FILE *fptr = fopen("file_that_does_not_exist","r"); 
... 
} 

aquí, si fopen falla, qué todavía necesitamos llamar fclose() para una pequeña limpieza ??

Respuesta

6

Su amigo sencilla, me refiero a imaginar .... ¿Tiene para apagar un ordenador, incluso si no puede arrancar ....: D

de la misma manera que no lo hace necesita cerrar un archivo que en realidad nunca abrió.

Un consejo extra: fclose se usa simplemente para liberar el archivo y que pueda ser utilizado por alguna otra aplicación o módulo, ya que no es un recurso compartible. Además, fclose significa que ahora libera el puntero que estaba usando y puede usarlo para cualquier otro archivo.

2

No. No es necesario. No abrió nada desde el principio, por lo que no necesita cerrarlo.

17

No, ya que fopen() devuelve 0, que es un identificador de archivo no válido. fclose() puede incluso bloquearse si intentas hacer esto.

1

No. No puede cerrar las puertas que no están abiertas. Si tiene éxito, fopen devuelve el puntero al archivo abierto y solo tiene sentido pasar este valor a fclose.

Cuestiones relacionadas