Llego tarde, pero quería alertar que no es correcto usar el sizeof de una struct para lectura o escritura en archivos, porque el tamaño (el size) de una struct depende del "data alignment" del compilador (o de cómo se haya seteado por línea de comando), y de la posición relativa de los miembros dentro de la struct. Pongo un ejemplo:
Código C++:
Ver original#include <iostream>
struct ejemplo1 {
char a;
int b;
double c;
};
struct ejemplo2 {
double c;
char a;
int b;
};
struct ejemplo3 {
int b;
double c;
char a;
};
int main()
{
std::cout << "sizof(char) + sizof(int) + sizeof(double) = "
<< sizeof(char) + sizeof(int) + sizeof(double) << '\n';
std::cout << "sizeof(ejemplo1) = " << sizeof(ejemplo1) << '\n';
std::cout << "sizeof(ejemplo2) = " << sizeof(ejemplo2) << '\n';
std::cout << "sizeof(ejemplo3) = " << sizeof(ejemplo3) << '\n';
}