sábado, 8 de enero de 2022

Apertura y Cierre de un Archivo con fopen y fclose en C

Archivos en C:

El estándar de C contiene varias funciones para la edición de ficheros, éstas están
definidas en la cabecera stdio.h y por lo general empiezan con la letra f, haciendo
referencia a file. Adicionalmente se agrega un tipo FILE, el cual se usará como apuntador
a la información del fichero 
La secuencia que usaremos para realizar operaciones será la
siguiente.


  • Crear un apuntador del tipo FILE *
  • Abrir el archivo utilizando la función fopen y asignándole el resultado de la llamada a nuestro apuntador.
  • Hacer las diversas operaciones (lectura, escritura, etc).
  • Cerrar el archivo utilizando la función fclose.


Función fopen

Esta función sirve para abrir y crear ficheros en disco.
El prototipo correspondiente de fopen es:

FILE * fopen (const char *filename, const char *opentype);

Los parámetros de entrada de fopen son:

  1. filename: una cadena que contiene un nombre de fichero válido. opentype: especifica el tipo de fichero que se abrirá o se creará.

Una lista de parámetros opentype para la función fopen son:

  • "r" : abrir un archivo para lectura, el fichero debe existir.
  • "w" : abrir un archivo para escritura, se crea si no existe o se sobreescribe si existe.
  • "a" : abrir un archivo para escritura al final del contenido, si no existe se crea.
  • "r+" : abrir un archivo para lectura y escritura, el fichero debe existir.
  • "w+" : crear un archivo para lectura y escritura, se crea si no existe o se sobreescribe si existe.
  • "r+b ó rb+" : Abre un archivo en modo binario para actualización (lectura y escritura).
  • "rb" : Abre un archivo en modo binario para lectura.

Adicionalmente hay tipos utilizando "b" (
binary) los cuales no serán mostrados 
y que solo se usan en los sistemas operativos que no pertenecen a la familia de unix.
fcl.


Función fclose


Esta función sirve para poder cerrar un fichero que se ha abierto.
El prototipo correspondiente de fclose es:

int fclose (FILE *stream);

Un valor de retorno cero indica que el fichero ha sido correctamente cerrado, si ha habido
algún error, el valor de retorno es la constante EOF.

Un ejemplo pequeño para abrir y cerrar el archivo llamado fichero.in en modo lectura:

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

int main (int argc, char** argv) {
    FILE *fp;

    fp = fopen ( "fichero.in", "r" );
    if (fp==NULL) {

    fputs ("File error",stderr); 
    exit (1);
    }
    fclose ( fp );
return 0;
}


Como vemos, en el ejemplo se utilizó el opentype "r", que es para la lectura.
Otra cosa importante es que el lenguaje C no tiene dentro de si una estructura para el
manejo de excepciones o de errores, por eso es necesario comprobar que el archivo fue
abierto con éxito "if (fp == NULL)". Si fopen pudo abrir el archivo con éxito devuelve la
referencia al archivo (FILE *), de lo contrario devuelve NULL y en este caso se debera
revisar la direccion del archivo o los permisos del mismo. En estos ejemplos solo vamos
a dar una salida con un retorno de 1 que sirve para señalar que el programa termino por
un error.
Otra cosa importante es que el lenguaje C no tiene dentro de si una estructura para el
manejo de excepciones o de errores, por eso es necesario comprobar que el archivo fue
abierto con éxito "if (fp == NULL)". Si fopen pudo abrir el archivo con éxito devuelve la
referencia al archivo (FILE *), de lo contrario devuelve NULL y en este caso se debera
revisar la direccion del archivo o los permisos del mismo. En estos ejemplos solo vamos
a dar una salida con un retorno de 1 que sirve para señalar que el programa termino por
un error.

No hay comentarios:

Publicar un comentario

Uso del fwrite y el fprintf

  fwrite Esta función está pensada para trabajar con registros de longitud constante y forma pareja con fread. Es capaz de escribir hacia un...