[問題] 程式跑完出現segmentation fault然後當掉
用dev-c++做了一個模擬走迷宮的程式,
也順利的跑到最後,但是要結束的時候就會當掉,debug說是segmentation fault
可是我完全不知道怎麼解決......
#include <iostream>
#include <iomanip>
using namespace std;
#define A 2
#define B 0
char k;
void maze(char(*)[13]);
void gogo(char(*)[13]);
void judge(char &,int &,int ,int ,char(*)[13]);
int main()
{
char m[12][13]={"############",
"#...#......#",
"X.#.#.####.#",
"###.#....#.#",
"#....###.#..",
"####.#.#.#.#",
"#..#.#.#.#.#",
"##.#.#.#.#.#",
"#........#.#",
"######.###.#",
"#......#...#",
"############"};
maze(m);
cout<<"程式結束\n";
system("PAUSE");
return EXIT_SUCCESS;
}
void maze(char (*m)[13]) //印出迷宮的圖
{
system("CLS");
for(int i=0;i<=11;i++){
for(int j=0;j<=12;j++)
cout<<m[i][j]<<" ";
cout<<endl;}
if(k=='0')return;
gogo(m);
}
void gogo(char(*m)[13]) //往四個方向輪流做判定
{
static int a=A,b=B;
static int di=1;//direction
char z;
switch(di%4)
{
case 0: z=m[a+1][b]; judge(z,di,a,b,m); m[a+1][b]=z; a=a+1;
break;
case 1: z=m[a][b+1]; judge(z,di,a,b,m); m[a][b+1]=z; b=b+1;
break;
case 2: z=m[a-1][b]; judge(z,di,a,b,m); m[a-1][b]=z; a=a-1;
break;
case 3: z=m[a][b-1]; judge(z,di,a,b,m); m[a][b-1]=z; b=b-1;
break;
}
if(k=='0')return;
system("PAUSE");
maze(m);
}
void judge(char &z,int &di,int a,int b,char(*m)[13]) //判定旁邊的是不是牆等等
{
if(z=='#'){di++; gogo(m);}
if(z=='.'){z='X'; di+=3;}
else
if(z=='X'){m[a][b]='.'; di+=3;}
if(z=='\0'){k='0';return;}
}
另外想順便問一下,遞迴多次後想結束程式的話,一定要用return直到回到main函數嗎?
有沒有其他方式呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.41.55
推
12/03 03:48, , 1F
12/03 03:48, 1F
→
12/03 03:49, , 2F
12/03 03:49, 2F
→
12/03 03:50, , 3F
12/03 03:50, 3F
推
12/03 12:56, , 4F
12/03 12:56, 4F