Manejo de Ficheros en C: Modos de Apertura y Funciones Esenciales

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en con un tamaño de 2,57 KB

Modos de Apertura de Ficheros en C

Para abrir un archivo en C, se utilizan los siguientes modos:

  • "r": Lectura. El fichero debe existir; de lo contrario, dará error.
  • "w": Escritura. Si existe, se pierde su contenido y se crea de nuevo. Si no existe, se crea.
  • "a": Añadir. Si existe información en el fichero, se guarda al final. Si no existe, se crea.
  • "r+": Lectura/escritura. El fichero debe existir.
  • "w+": Escritura/lectura. Si el fichero no existe, se crea; si existe, se borra su contenido y se crea de nuevo.
  • "a+": Lectura y añadir al final. Si no existe, se crea.

Adicionalmente, se puede añadir una b (binario) o una t (texto). La t se puede omitir, ya que es el valor por defecto.

Ejemplo de Apertura de Fichero

if ((archivo = fopen("datos.dat", "r")) == NULL) 
{
    printf("No puedo leer el fichero de datos");
    exit(1);
}

Lectura y Escritura de Estructuras

Para gestionar datos complejos, utilizamos las funciones fwrite y fread:

  • fwrite(&estruc, tamañoestruc, 1, punterofichero);
  • fread(&estruct, tamañoestruc, 1, punterofichero);

Para determinar el tamaño de las tablas o estructuras, utilizaremos la función sizeof().

Posicionamiento en el Fichero: fseek()

La función int fseek(punterofichero, desplaz, modo); permite mover el puntero dentro del archivo:

  • 0: Desde el principio del fichero (opción habitual).
  • 1: Desde la posición actual del puntero.
  • 2: Desde el final del fichero.

La función devuelve 0 si la operación se realiza correctamente y un valor distinto de 0 en caso de fallo.

Lectura y Escritura de Caracteres

  • Escritura: putc(carácter, puntero_fichero);
  • Lectura: char getc(puntf);

Lectura y Escritura Formateada

Para operaciones más sofisticadas en archivos de texto, se utilizan fprintf() y fscanf(), cuya funcionalidad es similar a printf() y scanf():

  • fprintf(puntero_fichero, "formatos", var1, var2, ...);
  • fscanf(puntero_fichero, "formatos", &var1, &var2, ...);

Entradas relacionadas: