Не верно. Есть такие штуки как выравнивание данных.
Не говоря уж о том что в общем случае не известно кто больше sizeof(theSend.buf) или sizeof(theSend.R10A2) или еще кто в этом union
Если уж пишем SEND, то и читаем SEND. А потом уж как положено обращаемся к его элементам.
Разумеется. что пишем - то и читаем, по размеру должно сбиваться. Но откуда Вы взяли что пишется SEND? Почему нельзя читать/писать Rez_10_A2? Что если sizeof(theSend.R10A2) напр всего лишь 8? Зачем тогда писать 400 байт вместо 16? Будет мусор в хвосте структуры? Так с этим человек уже согласился объявив 200 "от фонаря"
Недосмотрел что buf объявлен short, надо привести к char
C++ (Qt)
SEND theSend;
file.read((char *) theSend.buf, sizeof(Rez_10_A2));
Через sizeof(SEND) тоже можно, но тогда надо его объявлять так
C++ (Qt)
union SEND
{
short buf[1];
...
struct Rez_10_A2 R10A2;
...
};
Здесь видно что buf явная подстава