Saving complex C data structures to disk efficiently is best accomplished by writing raw binary records using fwrite(). This approach bypasses string conversion overhead and allows instant deserialization via fread().
Binary Struct Writing & Reading C Code Example
#include <stdio.h>
struct SensorRecord {
int sensor_id;
float temperature;
unsigned long timestamp;
};
int main(void) {
struct SensorRecord data_out = {101, 24.5f, 1700000000};
// 1. Write binary struct to disk
FILE *fp = fopen("sensor.bin", "wb");
if (fp) {
fwrite(&data_out, sizeof(struct SensorRecord), 1, fp);
fclose(fp);
}
// 2. Read binary struct from disk
struct SensorRecord data_in;
fp = fopen("sensor.bin", "rb");
if (fp) {
fread(&data_in, sizeof(struct SensorRecord), 1, fp);
fclose(fp);
printf("Read Sensor ID: %d, Temp: %.1f\n", data_in.sensor_id, data_in.temperature);
}
return 0;
}
Comments and corrections