在我的主要功能中,下面的函数片段循环以继续生成0到4之间的两个数字。第一次它通过循环它工作正常,但第二次它被核心转储。我不确定是不是因为其他地方的错误,或者我是不是正确地使用了rand和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;
}
答案 0 :(得分:3)
您展示的代码不会执行任何可能导致核心转储的代码,因此可能在您未显示的代码中。但是您错误地使用了srand
。
rand
函数返回的随机数实际上是一系列通过函数传递的数字,最后一个输出是新输入。这个函数在第一次运行之前需要播种,这就是srand
函数的作用。
您应该在程序开头只调用一次srand
。之后,只要您需要新的随机数,就可以致电rand
。