Проблема кодирования с использованием двумерного массива структур внутри другой структуры в C
Я работаю с двумерным массивом структур, который является частью другой структуры. Это не то, с чем я многое сделал, поэтому у меня проблема. Эта функция завершается сбоем после прохождения «тестового» цикла for ближе к концу. Он правильно печатает одну строку, прежде чем обнаружит ошибки.
Части моего кода, которые считывают данные в фиктивный двумерный массив структур, работают просто отлично, поэтому мой массив должен быть частью другой структуры (imageStruct).
Любая помощь будет принята с благодарностью!
/*the structure of each pixel*/
typedef struct
{
int R,G,B;
}pixelStruct;
/*data for each image*/
typedef struct
{
int height;
int width;
pixelStruct *arr; /*pointer to 2-d array of pixels*/
} imageStruct;
imageStruct ReadImage(char * filename)
{
FILE *image=fopen(filename,"r");
imageStruct thisImage;
/*get header data from image*/
/*make a 2-d array of of pixels*/
pixelStruct imageArr[thisImage.height][thisImage.width];
/*Read in the image. */
/*I know this works because I after storing the image data in the
imageArr array, I printed each element from the array to the
screen.*/
/*so now I want to take the array called imageArr and put it in the
imageStruct called thisImage*/
thisImage.arr = malloc(sizeof(imageArr));
//allocate enough space in struct for the image array.
*thisImage.arr = *imageArr; /*put imageArr into the thisImage imagestruct*/
//test to see if assignment worked: (this is where it fails)
for (i = 0; i < thisImage.height; i++)
{
for (j = 0; j < thisImage.width; j++)
{
printf("\n%d: R: %d G: %d B: %d\n", i ,thisImage.arr[i][j].R,
thisImage.arr[i][j].G, thisImage.arr[i][j].B);
}
}
return thisImage;
}
(В случае, если вам интересно, почему я использую фиктивный массив в первую очередь, это потому, что когда я начал писать этот код, я не мог понять, как сделать то, что я пытаюсь сделать сейчас.)
РЕДАКТИРОВАТЬ: Один человек предположил, что я не правильно инициализировал мой 2-мерный массив в typedef для imageStruct. Может ли кто-нибудь помочь мне исправить это, если это действительно проблема?