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