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

struct_binary_io.cc
#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;
}