[英]segmentation fault while generating a number of random numbers using rand() in C
我正在编写一个程序,需要将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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.