
#include <stdio.h>

#pragma pack(push, 1)
typedef struct
{
    unsigned int natoms;
    char atomtype;
    double epsilon;
} simulation_settings;
#pragma pack(pop)

void fancysimulation(simulation_settings* settings)
{
    printf("the result is: %g\n", settings->natoms*settings->epsilon);
}

int main()
{
    simulation_settings ss[2];
    ss[0].natoms = 10*1000;
    ss[0].atomtype = 'N';
    ss[0].epsilon = 2.34;
    ss[1].natoms = 10*10000;
    ss[1].atomtype = 'H';
    ss[1].epsilon = 2.345;

    printf("uint: %lu\nchar: %lu\ndouble: %lu\n", sizeof(unsigned int), sizeof(char), sizeof(double));
    printf("simsettings: %lu\n", sizeof(simulation_settings));

    FILE* f = fopen("settings.bin", "w+");
    if(!f) {
        perror("opening settings.bin");
        return 1;
    }

    fwrite(ss, sizeof(simulation_settings), 2, f);

    fclose(f);

    //fread(ss, sizeof(simulation_settings), 2, f);

    fancysimulation(&ss);

    return 0;
}

