Lenguaje C
Los archivos binarios en C son aquellos que contienen datos en un formato no legible para humanos, sino que están codificados en bytes. Estos archivos son útiles cuando se desea guardar datos estructurados, como estructuras o matrices, en un formato compacto y eficiente en términos de memoria y velocidad de acceso.
Para trabajar con archivos binarios en C, se utilizan funciones similares a las que se utilizan con archivos de texto, como fopen
, fwrite
, fread
y fclose
. Sin embargo, en lugar de escribir y leer datos en formato de texto, se escriben y leen bytes de datos en el archivo binario.
Una forma común de trabajar con archivos binarios es guardar estructuras de datos en el archivo. Las estructuras son un tipo de datos que permiten almacenar varios valores relacionados juntos en una sola unidad. Para definir una estructura en C, se utiliza la siguiente sintaxis:
struct NombreEstructura {
tipoDato1 campo1;
tipoDato2 campo2;
// ...
tipoDatoN campoN;
};
Donde NombreEstructura
es el nombre que se le da a la estructura, y campo1
, campo2
, …, campoN
son los nombres de los campos que conforman la estructura, cada uno con su tipo de dato correspondiente. Por ejemplo, la siguiente estructura define un registro de empleado con tres campos:
struct Empleado {
int id;
char nombre[50];
float salario;
};
Una vez definida la estructura, se puede utilizar para almacenar datos en un archivo binario utilizando las funciones de la biblioteca estándar de C. A continuación, se presenta un ejemplo de cómo guardar y leer estructuras de datos en un archivo binario:
#include <stdio.h>
struct Empleado {
int id;
char nombre[50];
float salario;
};
int main() {
// Guardar estructuras de datos en un archivo binario
struct Empleado empleados[2] = {
{1, "Juan Perez", 2500.50},
{2, "Maria Rodriguez", 3000.75}
};
FILE *archivo = fopen("empleados.dat", "wb");
fwrite(&empleados, sizeof(struct Empleado), 2, archivo);
fclose(archivo);
// Leer estructuras de datos de un archivo binario
archivo = fopen("empleados.dat", "rb");
struct Empleado empleados_leidos[2];
fread(&empleados_leidos, sizeof(struct Empleado), 2, archivo);
fclose(archivo);
// Imprimir datos leídos
for (int i = 0; i < 2; i++) {
printf("ID: %d\n", empleados_leidos[i].id);
printf("Nombre: %s\n", empleados_leidos[i].nombre);
printf("Salario: %.2f\n", empleados_leidos[i].salario);
printf("\n");
}
return 0;
}
En este ejemplo, primero se definió la estructura Empleado
con tres campos: id
(entero), nombre
(cadena de caracteres) y salario
(flotante). Luego se creó un arreglo de dos estructuras de Empleado
llamado empleados
, y se escribió este arreglo en el archivo «empleados.dat» usando la función fwrite
. Para esto, se utilizó el operador `