Код:
------------------- main.cpp -------------------------------------
#include "BMP.h"
#include <stdio.h>
tagBITMAPFILEHEADER bmpFileHeader;
tagBITMAPINFOHEADER bmpInfoHeader;
int file_bmp,nCol,nRow,col;
tagRGBQUAD* flat;
tagRGBQUAD p;
void out(void)
{
for (int i = 0; i < col; i++) cout << flat[i].r << flat[i].g << flat[i].b;
}
void readFile(char* file)
{
file_bmp = open (file, O_RDONLY);
read (file_bmp, &bmpFileHeader, 14);
read (file_bmp, &bmpInfoHeader, 40);
nCol = bmpInfoHeader.biWidth;
nRow = bmpInfoHeader.biHeight;
cout << (col = nRow*nCol) << "\n";
int n = 0;
for (int y = nRow; y > 0; y--)
{
for (int x = 0; x < nCol; x++)
{
read (file_bmp, &p, sizeof(p));
cout << n << "\n";
cout << (int)p.r << " " << (int)p.g << " " << (int)p.b << "\n";
flat[n].r = p.r;
flat[n].g = p.g;
flat[n].b = p.b;
n++;
}
}
out();
}
int main (int argc, char* argv[])
{
readFile(argv[1]);
cout << "\n";
return 0;
}
-------------------------------------------------------------------------------
------------------------------BMP.h-----------------------------------------
#include <fcntl.h> //Необходимо для работы системной функции открытия файлов
#include <unistd.h> //Необходимо для работы системной функции чтения файлов
#include <iostream.h> //необходим для cout
#pragma pack(push,1) //для чтения необходимо выравнивение, с сохранением его текущегозначения
typedef unsigned long DWORD; // Двойное слово - 32 бита (разряда)
typedef unsigned short WORD; // Слово - 16 бит (разрядов)
typedef signed long LONG;
typedef unsigned int UINT;
// Заголовок файла
typedef struct tagBITMAPFILEHEADER
{
WORD bfType; // 'BM' = 4D42h
DWORD bfSize;
UINT bfReserved1;
UINT bfReserved2;
DWORD bfOffBits; // Смещение к растру
};
// Заголовок Bitmap
typedef struct tagBITMAPINFOHEADER
{
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
};
//структура пиксела
typedef struct tagRGBQUAD
{
char r;
char g;
char b;
char a;
};
#pragma pack(pop) //восстановление значения выравнивания
-------------------------------------------------------------------------------- ------
[alexandr@cyclon Img]$ ./a.out 32b.bmp
289081 - общее счисло пикселов, необходимо для вывода значений
0 - значение индекса массива
74 41 41 - цвет первого пиксела
Segmentation fault - сбой
Вот собсно проблема. Читается бмпешка, но после чтения первого же пиксела происходит segmentation fault очевидно проблема в заполнение массиова, но в чём именно, ведь определён массив правильно или нет (я мнус по поводу динамического массива, если я не правильно его определил может кто подскажет как это определить).
Заранее спасибо!!!

Ответ на:
комментарий
от Dead

Ответ на:
комментарий
от cyclon

Ответ на:
комментарий
от Dead

Ответ на:
Re
от cyclon

Ответ на:
комментарий
от Dead

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Как работать с BMP разной битности. (2003)
- Форум Привидите пожалуйсто рабочий код или покажите ошибку. (2003)
- Форум Почему не накладывается текстура? (2003)
- Форум Запись структуры в файл (2014)
- Форум Тормоизт текстурированный куб в OpenGL. (2003)
- Форум [c++] кто тупит — я или g++? что скажут владельцы icc? (2010)
- Форум debug простенького приложения (С++) (2010)
- Форум Изменение цвета пикселей в простой программе по копированию bmp файла (2016)
- Форум [X11]Не могу понять, где по-нормальному объявлена структура Display (2011)
- Форум stl (2003)