Размеры bmp - файла через fstream
От: Zh0rzh  
Дата: 25.04.03 19:20
Оценка:
Необходимо узнать размеры bmp — файла с помощью класса fstream.
Я пробовал так

int Width, Height;
char *text = new char[sizeof(BITMAPFILEHEADER)];

BITMAPINFOHEADER  bmih;
BITMAPFILEHEADER  bmfh;

fstream bmpfile; 

bmpfile.open("C:\\temp\\test.bmp", ios::in|ios::binary);

bmpfile.read(text, sizeof(BITMAPFILEHEADER));
memcpy(&bmfh, text, strlen(text));

bmpfile.read(text, sizeof(BITMAPINFOHEADER));
memcpy(&bmih, text, strlen(text));

cout << bmfh.bfType << endl;
cout << bmih.biWidth << endl;

bmpfile.close();

Но ничего не выходит. На вывод идут два числа, и программа вылетает.
Реализацию с помощью функций библиотеки stdio.h видел сдесь http://www.rsdn.ru/Forum/?mid=78830
Автор: Flamer
Дата: 31.07.02


Помогите советом, что я не правильно делаю ?
Re: Размеры bmp - файла через fstream
От: Павел Кузнецов  
Дата: 25.04.03 20:21
Оценка:
Здравствуйте, Zh0rzh, Вы писали:

Z>
Z>bmpfile.read(text, sizeof(BITMAPFILEHEADER));
Z>memcpy(&bmfh, text, strlen(text));
Z>


strlen в данном случае не лучший выбор: text далеко не обязательно завершается нулем, и ты рискуешь запортить стек, записав больше, чем размер bmfh.

Z>
Z>bmpfile.read(text, sizeof(BITMAPINFOHEADER));
Z>memcpy(&bmih, text, strlen(text));
Z>


То же самое.
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.