struct pixel **read_pixel_array(FILE *image, int pixel_array_offset, int width, int height) {
    struct pixel** pixels = malloc(sizeof(struct pixel*) * height);
    fseek(image, pixel_array_offset, SEEK_SET);

    for(struct pixel** i = pixels; i < sizeof(struct pixel*) * height + pixels; i += sizeof(struct pixel*)) {
        *i = malloc(sizeof(struct pixel) * width);

        unsigned char red, green, blue = 0;
        for(struct pixel* j = *i; j < sizeof(struct pixel) * width + *i; j += sizeof(struct pixel)) {
            fread(&blue, sizeof(unsigned char), 1, image);
            fseek(image, 1, SEEK_CUR);

            fread(&green, sizeof(unsigned char), 1, image);
            fseek(image, 1, SEEK_CUR);

            fread(&red, sizeof(unsigned char), 1, image);
            fseek(image, 1, SEEK_CUR);

            j->blue = blue;
            j->green = green;
            j->red = red;
        }
    }

    return pixels;
}
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.
 *    NOTE: We've tested this assumption on the Teaching Lab machines, but 
 *    if you're trying to work on your own computer, we strongly recommend 
 *    checking this assumption!
 * 4. Return the address of the first `struct pixel *` you initialized.
 */