Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Глюк при чтении структуры из файла


Автор: AlexNor 23.4.2004, 09:18
Допустим есть такая структура:
struct AA
{
WORD w1;
WORD w2;
BYTE b1;
BYTE b2;
int i1;
BYTE b3;
...
}

при чтении инфы из файла в такую структуру значение i1 (и все после неё переменные) отображают неверные значения.

Если читаю из файла след. байты: 0x01;0x00;0x02;0x00;0x03;0x04;0x38;0x00;0x00;0x00;0x20;0x00;0x05...
то получаю:
w1 = 0x01;
w2 = 0x02;
b1 = 0x03;
b2 = 0x04;
i1 = 0x00200000; !!!!!<- выравнивание происходит???
b3 = 0x05;

Я не пойму это из-за выравнивания или из-за чего?
Как от этого можно избавится?
Что бы происходило нормальное чтение из файла в структуру.

Автор: achmed 23.4.2004, 09:36
не забывайте стаать флаг - бинарный файл

Автор: AlexNor 23.4.2004, 09:42
Не понял?

А что это за флаг и где он флаг выставляется?

( Я открываю файл API функцией CreateFile(...) )

Автор: bel_nikita 23.4.2004, 09:47
Попробуй так:
Код
#pragma pack(push, _Aligment_FileStruct, 1)
struct AA
{
WORD w1;
WORD w2;
BYTE b1;
BYTE b2;
int i1;
BYTE b3;
};
#pragma pack(pop, _Aligment_FileStruct)

Автор: AlexNor 23.4.2004, 09:51
bel_nikita, щас попробую...

Автор: AlexNor 23.4.2004, 10:02
bel_nikita,
пасибо!!!
получилось!
а откуда ты знаеш об этой комманде, где вообще можно надыбать
описаие таких команд.

Автор: bel_nikita 23.4.2004, 10:06
Цитата
а откуда ты знаеш об этой комманде, где вообще можно надыбать
описаие таких команд.
Из Библии дяди Билла wink.gif MSDN называется biggrin.gif
http://msdn.microsoft.com/

Автор: AlexNor 23.4.2004, 10:09
MSDN большоооой. smile.gif


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)