我正在编写一个程序,我需要将2D数组(板)的多个元素(由空白变量指定)设置为0.(数组大小为9x9)这些位置必须随机拾取并且一旦我使用以下代码段来执行此操作,程序在某些情况下最终会出现分段错误,并且不会将所需的位置数设置为0.
i = rand() % 10;
j = rand() % 10;
if (board[i][j]){
board[i][j] = 0;
blanks--;
}
我一直在查看这个问题,并且知道rand()
不是线程安全的。这是我得到的分段错误的原因,还是别的什么?
此外,有解决方法吗? (对我来说,得到一组没有这种分段错误的随机数)
答案 0 :(得分:6)
根据您的要求
(数组大小为9x9)
您的数组索引应该最高 8
。 C
数组具有基于0
的索引。
更改
i = rand() % 10;
j = rand() % 10;
到
i = rand() % 9;
j = rand() % 9;