struct pixel **read_pixel_array(FILE *image, int pixel_array_offset, int width, int height) {

  struct pixel** pixel_array = malloc(height * sizeof(struct pixel*));

  struct pixel* first_pixel_row = malloc(width * sizeof(struct pixel));
  for (int k = 0; k < width; k+= 3) {
    struct pixel* pixie = malloc(3);
    fseek(image, pixel_array_offset + k, SEEK_SET);
    fread(&pixie->blue, 1, 1, image);
    fseek(image, pixel_array_offset + k + 1, SEEK_SET);
    fread(&pixie->green, 1, 1, image);
    fseek(image, pixel_array_offset + k + 2, SEEK_SET);
    fread(&pixie->red, 1, 1, image);
    first_pixel_row[k] = *pixie;
  }
  pixel_array[0] = first_pixel_row;
  
  for (int i = 1; i < height; i++) {
    struct pixel* pixel_row = malloc(width * sizeof(struct pixel)); 
    for (int j = 0; j < width; i+= 3) {
      struct pixel* pixie = malloc(3);
      fseek(image, i * pixel_array_offset + j, SEEK_SET);
      fread(&pixie->blue, 1, 1, image);
      fseek(image, i * pixel_array_offset + j + 1, SEEK_SET);
      fread(&pixie->green, 1, 1, image);
      fseek(image, i * pixel_array_offset + j + 2, SEEK_SET);
      fread(&pixie->red, 1, 1, image);
      pixel_row[j] = *pixie;
    }
    pixel_array[i] = pixel_row;
  }
  return pixel_array;
}
Read in pixel array by following these instructions:
1. First, allocate space for m `struct pixel *` values, where m is the height of the image.  Each pointer will eventually point to one row of pixel data.
2. For each pointer you just allocated, initialize it to point to heap-allocated space for an entire row of pixel data.
 * 3. Use the given file and pixel_array_offset to initialize the actual struct pixel values. Assume that sizeof(struct pixel) == 3, which is consistent with the bitmap file format.
 * 4. Return the address of the first struct pixel * you initialized.