C语言怎么取出一张256色位的bmp图像的某个像素的颜色

我想实现的是:将一张256色位图的bmp图像(1.bmp)上下左右移动N个像素(比如向右移5个像素,最左边的5个像素全涂成黑色)生成另一张图像(2.bmp)。我现在写的有些问题:
代码:
#include
#include

int main()
{
BITMAPFILEHEADER fileHeader;
BITMAPINFOHEADER infoHeader;
FILE *pfin = fopen("F:\1.bmp","rb");
FILE *pfout = fopen("F:\2.bmp","wb");
fread(&fileHeader,sizeof(BITMAPFILEHEADER),1,pfin);
fread(&infoHeader,sizeof(BITMAPINFOHEADER),1,pfin);
int size = 512*512;
int i;
unsigned char img[512][512];
fread(img,sizeof(byte),size,pfin);
if(infoHeader.biBitCount == 8)
{
for(i=1;i<512;i++)
{
img[i][50]=0;

}
}

fwrite(&fileHeader,sizeof(fileHeader),1,pfout);
fwrite(&infoHeader,sizeof(infoHeader),1,pfout);
fwrite(img,sizeof(byte),size,pfout);
}

BMP 图解的数据还是比较简单的,要求的:
(1)图像数据是从下往上的,最后一行数据在最开始
(2)每一行数据 4 字节对齐,如果数据不足需要补零的
注意到这两点,平移图像应该不难。

按你的代码这个思路的话,就要去看BMP的RFC文件了。
http://blog.chinaunix.net/uid-23592843-id-150648.html