为什么我的程序一开始就结束了??请大虾们赐教!!小女子在线等。。
秋兔子 2007-05-03 09:37:53 写的内容是一个简单的图形编辑器,虽然编译成功,但因为根本无法运行,所以错误多多。。烦请各位硬着头皮帮我看看~~
系统报错:Abnormal program termination
代码如下:
#include <stdio.h>
int m,n;
char bmp[250][251];
void seek(int i,int j,char o,char c)
{ if(i>=1&&bmp[i-1][j]==o)
{bmp[i-1][j]=c;
seek(i-1,j,o,c);
if(j>=1&&bmp[i][j-1]==o)
{bmp[i][j-1]=c;
seek(i,j-1,o,c);
}
if(i<m-1&&bmp[i+1][j]==o)
{bmp[i+1][j]=c;
seek(i+1,j,o,c);
}
if(j<n-1&&bmp[i][j+1]==o)
{bmp[i][j+1]=c;
seek(i,j+1,o,c);
}
}
if(j>=1&&bmp[i][j-1]==o)
{bmp[i][j-1]=c;
seek(i,j-1,o,c);
if(i<m-1&&bmp[i+1][j]==o)
{bmp[i+1][j]=c;
seek(i+1,j,o,c);
}
if(j<n-1&&bmp[i][j+1]==o)
{bmp[i][j+1]=c;
seek(i,j+1,o,c);
}
}
if(i<m-1&&bmp[i+1][j]==o)
{bmp[i+1][j]=c;
seek(i+1,j,o,c);
if(j<n-1&&bmp[i][j+1]==o)
{bmp[i][j+1]=c;
seek(i,j+1,o,c);
}
}
if(j<n-1&&bmp[i][j+1]==o)
{bmp[i][j+1]=c;
seek(i,j+1,o,c);
}
return;
}
int main()
{int i,j,x,y,x1,x2,y1,y2,flag=0;
char name[71],ch,c;
while(flag==0)
{ scanf("%c%d%d\n",&ch,&m,&n);
memset(bmp,0,m*(n+1));
for(i=0;i<m;i++)
{bmp[i][n]='\0';} /* new */
ch=getchar();
switch(ch)
{ case 'I':{break;} /*new*/
case 'C':{memset(bmp,0,250*251);
for(i=0;i<m;i++)
{bmp[i][n]='\0';}
break; /*rubber*/
}
case 'L':{scanf("%d%d%c\n",&x,&y,&c);
bmp[x-1][y-1]=c;
break; /*pencil*/
}
case 'V':{scanf("%d%d%d%c\n",&x,&y1,&y2,&c);
for(i=y1-1;i<=y2-1;i++)
{bmp[i][x-1]=c;}
break; /*vertical line*/
}
case 'H':{scanf("%d%d%d%c\n",&x1,&x2,&y,&c);
for(i=x1-1;i<=x2-1;i++)
{bmp[y-1][i]=c;}
break; /*horizen line*/
}
case 'K':{scanf("%d%d%d%d%c\n",&x1,&y1,&x2,&y2,&c);
for(i=x1-1;i<=x2-1;i++)
for(j=y1-1;j<=y2-1;j++)
{bmp[i][j]=c;}
break;
} /*square*/
case 'F':{scanf("%d%d%c\n",&x,&y,&c);
if(c!=bmp[x-1][y-1])
{seek(x-1,y-1,bmp[x-1][y-1],c);
bmp[x-1][y-1]='c';
}
break;
} /*paint*/
case 'S':{scanf("%s",name);
break; /*name*/
}
case 'X':{flag=1;
break; /*end*/
}
}
printf("%s\n",name);
for(i=0;i<m;i++);
printf("%s",bmp[i]);
}
return 0;
}