// assume file points to a file
struct myStruct
{
WORD word;
WORD word2;
};
Два конкурирующих кода: (1)
myStruct a;
a.word = 0xABCD;
a.word2 = 0xFADB;
fwrite(&a, sizeof(myStruct), 1, file);
output:
cdab dbfa
против: (2)
DWORD word = 0xABCDFADB;
fwrite(&word, sizeof(DWORD), 1, file);
output:
dbfa cdab
Мой вопрос таков: почему fwrite не поддается написанию структуры? Я бы предположил, что (1) будет иметь эквивалентный результат (2). Однако fwrite читает каждую переменную члена структуры по отдельности (а затем записывает их в порядке с прямым порядком байтов). Вместо этого я ожидал, что (1) прочитает всю структуру как один непрерывный блок и начнет записывать двоичные данные, начиная с конца этого блока (а не с конца первой переменной-члена).
Мысли?