繁体   English   中英

分段错误,同时在C中使用rand()生成许多随机数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM