在我的主要函数中,下面的函数片段被循环,以保持生成0到4之间的两个数字。第一次循环时,它工作得很好,但第二次它被核心转储。我不确定是因为其他地方的bug,还是我没有正确使用rand and srand。这里是C语言的新手。
void generate_player2_move(char board[][SIZE], int row, int col) {
//segmentation fault (core dumped) somewhere around here.
int randrow, randcol;
srand((unsigned) randrow);
srand((unsigned) randcol);
row = rand() % 4;
col = rand() % 4;
}发布于 2018-03-24 02:48:28
您所展示的代码没有做任何可能导致核心转储的事情,所以这可能是在您没有展示的代码中。但是,您错误地使用了srand。
rand函数返回的随机数实际上是通过函数传递的一系列数字,最后一个输出是新的输入。这个函数需要在第一次运行之前设定种子,这就是srand函数所做的事情。
您应该只在程序开始时调用srand一次。在那之后,只要你需要一个新的随机数就调用rand。
https://stackoverflow.com/questions/49456471
复制相似问题