gpt4 book ai didi

c - 当我编译并尝试运行此代码时出现段错误

转载 作者:行者123 更新时间:2023-11-30 20:28:53 24 4
gpt4 key购买 nike

这是我的代码的一部分:

for(i = 0; i < rows; i++)
{
for(j = 0; j < columns; j++)
{
for(k = 0; k < rows - i && k < columns - j; k++)
{
if(i + k > rows || j + k > columns) break;
if(b->board[i + k][j + k] == 1) counter++;
if(b->board[i + k][j + k] == 2) counter = 0;
if(counter > max_pd)
{
plh = counter;
jkee = j;
kkee = k;
}
}
counter = 0;
}
if(plh > max_pd)
{
max_pd = plh;
plh = 0;
for(n = 0; n < 1; n++)
{
if(i + kkee > rows || jkee + kkee + 1 > columns) break;
if(b->board[i + kkee + 1][jkee + kkee + 1] == 0 && b->board[i + kkee][jkee + kkee + 1] != 0) play_pd = jkee + kkee + 1;
}
}
counter = 0;
plh = 0;
jkee = 0;
kkee = 0;
}

当我尝试在以下行运行此代码时出现段错误:

if(b->board[i + kkee + 1][jkee + kkee + 1] == 0 && b->board[i + kkee][jkee + kkee + 1] != 0) play_pd = jkee + kkee + 1;

但是,在上面的行中,我明确指出,如果放入棋盘中的数字不在那里,则中断。

(板在如下结构中定义:b->board[行][列])

最佳答案

问题出在这里:

if(i + kkee > rows || jkee + kkee + 1 > columns) break;
if(b->board[i + kkee + 1][jkee + kkee + 1] == 0 && b->board[i + kkee][jkee + kkee + 1] != 0) play_pd = jkee + kkee + 1;

边框的行和列的索引必须分别为 < rows< columns

要打破的测试应该是

if(i + kkee + 1 >= rows || jkee + kkee + 1 >= columns) break;

这将确保下一条指令不会使用越界索引。

按照说明,您遇到了与上述相同的问题:

if(i + k > rows || j + k > columns) break;
if(b->board[i + k][j + k] == 1) counter++;
if(b->board[i + k][j + k] == 2) counter = 0;

中断测试应该是

if(i + k >= rows || j + k >= columns) break;

关于c - 当我编译并尝试运行此代码时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59714859/

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