for (int j = 0; j < a + 2; j++)
{
for (int k = 0; k < b + 2; k++)
{
if (j == 0 && j == a - 1)
{
p[j][k] = 'q';
}
else if (k == 0 && j!=0&&j!=a-1)
{
p[j][k] = 'q';
}
else if (k == a-1 && j != 0 && j != a - 1)
{
p[j][k] = 'q';
}
else
{
char c;
cin >> c;
p[j][k] = c;
}
}
只需要检查a和b的值与二维数组p的行和列长度的大小关系就可以知道是否越界了啊。循环内部代码不越界,就看循环的最大值是否越界
你这连数组定义都没放出来,谁知道你数组到底多大,从哪开始越界了?
此外,你都知道数组越界了,好好看看索引大小啊