文法的に間違っているところがあればご指摘いただきたいと思って投稿しました。
よろしくお願いします。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MS 200
void move(unsigned char *,int,int);
main()
{
char fi[50];
int i,j;
FILE *fp;
unsigned short header[13]={0x4d42,54490,1,0,0,26,0,12,0,MS,MS,1,24};
unsigned char *bmp;
bmp=(unsigned char *)malloc(MS*MS*3);
for(i=0;i<MS*MS;i++)
{
bmp[i*3+0]=0;
bmp[i*3+1]=0;
bmp[i*3+2]=0;
}
for(i=75;i<=124;i++)
{
for(j=75;j<=124;j++)
{
bmp[(i*MS+j)*3+0]=0;
bmp[(i*MS+j)*3+1]=255;
bmp[(i*MS+j)*3+2]=255;
}
}
move(bmp,30,60);
printf("Input file name : ");
scanf("%s",fi);
if((fp=fopen(fi,"wb"))==NULL)
{
printf(stderr,"Error : file open[%s].\n",fi);
exit(1);
}
fwrite(header,2,13,fp);
fwrite(bmp,1,200*200*3,fp);
fclose(fp);
return 0;
}
void move(unsigned char *b,int x0,int y0)
{
int i,j,x,y;
unsigned char *a;
a=(unsigned char *)malloc(MS*MS*3);
for(i=0;i<MS*MS;i++)
{
a[i*3+0]=0;
a[i*3+1]=0;
a[i*3+2]=0;
}
for(i=0;i<MS;i++)
{
y=i-y0;
if(0<y0 && y0<MS)
{
for(j=0;j<MS;j++)
{
x=j-x0;
if(0<x0 && x0<MS)
{
a[(i*MS+j)*3+0]=b[(y*MS+x)*3+0];
a[(i*MS+j)*3+1]=b[(y*MS+x)*3+1];
a[(i*MS+j)*3+2]=b[(y*MS+x)*3+2];
}
}
}
}
for(i=0;i<MS*MS*3;i++)
{
b=a;
}
free(a);
}