gpt4 book ai didi

c - 多个循环的段错误(核心转储)错误

转载 作者:太空宇宙 更新时间:2023-11-04 02:41:38 25 4
gpt4 key购买 nike

我正在制作一个数独解决程序,但我在下面的函数中遇到了段错误(核心转储)错误。在这个函数中,我试图在无法填写特定数字的地方填写-1。

有人知道如何解决这个问题吗?

void check(int mat[9][9])
{
int i, j, k, m;
int num = 1;
int top, left;

while (num < 10) {
for (i=0; i<9; i++) {
for (j=0; j<9; j++) {
if (mat[i][j] == num) {

//--------- core dumped error occurs here-------------

for (k=0; k<9; k++) {
if (mat[i][k] == 0) mat[i][k] = -1; // check row
if (mat[k][j] == 0) mat[k][j] = -1; // check column
}

top = (i/3)*3;
left = (j/3)*3;
for (k=0; k<3; k++) {
for (m=0; m<3; k++) {
if(mat[k+top][m+left] == 0) mat[k+top][m+left] = -1; // check square
}
}

//------------------------------------------

}
}
}

// code abbreviation

num++;
}
}

最佳答案

这个:

      for (k=0; k<3; k++) { 
for (m=0; m<3; k++) {

在我看来肯定是坏掉的/可疑的。请注意,两个循环都会递增 k,因此外部循环永远不会迭代。我认为,内部的将永远运行,并且肯定会由于读取整个内存而触发无效访问。

关于c - 多个循环的段错误(核心转储)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31296502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com