我试图构建一个带有int **矩阵的滑动益智游戏,代码非常繁琐,但我发现问题出在这些功能上。每当我在“温度”部分按下一个键时,它就会停止并显示段错误消息。
struct zeropos{
int i,j;
};
struct zeropos* zero_pos(int **matriz){
struct zeropos pos_zero;
struct zeropos *pointer=&pos_zero;
int i, j;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(matriz[i][j]==0){
pos_zero.i=i;
pos_zero.j=j;
printf("%d\n %d\n", pos_zero.i, pos_zero.j);
}
}
}
return pointer;
}
void keyDown(int **matriz){
struct zeropos *zp;
int temp, i, j;
int zpi=0, zpj=0;
printf("%d\n %d\n", zpi, zpj);
zp = zero_pos(matriz);
zp->i = zpi;
zp->j = zpj;
setbuf(stdout, NULL);
printf("%d\n %d\n", zpi, zpj);
if(zp->i==0){
return;
}
temp = matriz[zp->i + 1][zp->j];
matriz[zp->i + 1][zp->j] = 0;
matriz[zp->i][zp->j] = temp;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%d ", matriz[i][j]);
}
printf("\n");
}
}
分段错误(核心已转储)