ubuntu中C程序中的分段故障(核心转储)



我正在尝试创建一个迷宫游戏,在这个游戏中,我们用$等输入来创建迷宫。我用*来表示边界。尽管这个程序在DEV C++中运行得很好,但它在C中出现了分段错误。我只是看不出我做错了什么,也看不出为什么它在windows中有效,而在Ubuntu中无效。这是我的代码:

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {

int row, column;
int player_row, player_column, final_row, final_column;
int total_prize=0;
int prize;  
int dolar[50][50];  
char maze[50][50];
scanf("%d %d", &row, &column);  
int i;
int j;
for(i=0;i<=row;i++){
for(j=0;j<=column;j++){
maze[i][j]='+';
}
}
for(i=0;i<column;i++){
maze[0][i]='*';
maze[row-1][i]='*';
}
for(j=0;j<row;j++){
maze[j][0]='*';
maze[j][column-1]='*';
}
int details = 1;
while(details==1){
char detail;
int row, column;
//scanf("%s %d %d",&detail, &row, &column);
scanf("%s", &detail);
if(detail=='s'){
scanf("%d %d", &row, &column);
player_row = row;
player_column = column;
maze[row][column]='O';
}
else if(detail=='f'){
scanf("%d %d", &row, &column);
final_row =row;
final_column = column;
maze[row][column]=' ';  
}
else if(detail=='b'){
scanf("%d %d", &row, &column);
maze[row][column]='*';  
}
else if(detail=='$'){
scanf("%d %d %d", &row, &column, &prize);
//scanf("%d", &prize);
dolar[row][column]=prize;
maze[row][column]='$';  
}
else if(detail=='X'){
scanf("%d %d", &row, &column);
maze[row][column]='X';  
}
else if(detail="end"){
maze[0][0]='*';
maze[0][1]='*';
maze[0][2]='*';
maze[0][3]='*';
break;  
}           
}
for(i=0;i<=row;i++){
for(j=0;j<=column;j++){
if(maze[i][j]=='+'){
printf(" ");        
}
else{
printf("%c", maze[i][j]);
}           
}
printf("n");
}

分段错误是由于指针的无效使用造成的。这里有一个好的(可怕的(例子:

int *ptr = 0;
*ptr = 17;

相关内容

  • 没有找到相关文章

最新更新