I am trying to write a program that outputs a bmp file. The code compiles, and runs, but the .bmp won't open! Where am I going wrong?

Here is my code for generating the bitmap...

Code:
void generateImage(int **grid, int gridsize){
	int bytesPerLine,i,j;
	bmpHeader header;
	FILE* image;
	int count=0;
	int test;
	
	memset ((char *)&header,0,sizeof(bmpHeader));
	memcpy (header.bm,"BM",2);
	header.headerSize = 54L;
	header.infoSize = 0x28L;
	header.width = gridsize;
	header.height = gridsize;
	header.planes = 1;
	header.bits = 24;
	header.compression = 0L;
	
	bytesPerLine = header.width * 3;
	if (bytesPerLine & 0x0003){
		bytesPerLine |= 0x0003;
		++bytesPerLine;
	}
	
	header.filesize = header.headerSize + (long)bytesPerLine * header.height;
	
	image = fopen("generatedPattern.bmp","w");
	fwrite(&header,1,sizeof(header),image);
	
	char* arrayLine;
	arrayLine = (char*)malloc(bytesPerLine);
	
	for (j=gridsize;j>0;j--) {
		memset((char*)arrayLine,0,bytesPerLine);
		for (i=0;i<(3*gridsize);i=i+3) {
			if (grid[j-1][i/3] !=0) {
				arrayLine[i]   = 255;
				arrayLine[i+1] = 255;
				arrayLine[i+2] = 255;
			}
			else {
				arrayLine[i]   = 0;
				arrayLine[i+1] = 0;
				arrayLine[i+2] = 0;
			}

		}
		test=fwrite(arrayLine,1,bytesPerLine,image);
		if (!test) printf("Write failed");
	}
	fclose(image);
}