UC3M

Grado en Ing. Telemática/Sist. Audiovisuales/Sist. de Comunicaciones

Arquitectura de Sistemas

Septiembre 2017 - Enero 2018

9.2.3. Cerrando un fichero

Después de abrir un fichero y leerlo o escribir en él, hay que desenlazarlo del flujo de datos al que fue asociado. Esto se hace con la función fclose, cuya sintaxis es la siguiente:

#include <stdio.h>
int fclose(FILE *stream);

Si fclose cierra bien el fichero, devuelve 0. Si no, la función devuelve EOF. Normalmente sólo falla si se ha borrado el fichero antes de intentar cerrarlo. Acuérdate siempre de cerrar el fichero. Si no lo haces, se pueden perder los datos almacenados en él. Además, si no lo cierras, otros programas pueden tener problemas si lo quieren abrir más tarde.

El siguiente programa abre y cierra un fichero de texto, comprobando los posibles errores que puedan surgir:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>

enum {EXITO, FALLO};
int main(void)
{
  FILE *ptr_fichero;
  char nombre_fichero[] = "resumen.txt";
  int resultado = EXITO;

  if ( (ptr_fichero = fopen(nombre_fichero, "r") ) == NULL) 
  {
    printf("No se ha podido abrir el fichero %s.\n", nombre_fichero);
    resultado = FALLO;
  }
  else 
  {
    printf("Abierto fichero; listos para cerrarlo.\n");
    if (fclose(ptr_fichero)!=0) 
    {
      printf("No se ha podido cerrar el fichero %s.\n", nombre_fichero);
      resultado = FALLO;
    }
  }
  return resultado;
}