在C中的char数组上运行的递归函数中的分段错误

use*_*733 0 c arrays recursion char tic-tac-toe

我正在用C语写Tic-tac-toe,我在游戏板上放置一个标志的功能有问题.这是代码:

int aiPutSign(int difficultyLevel, char board[])
{
    if(difficultyLevel == 1)
    {
        srand(time(NULL));
        int field = rand() % 9;
        return board[field] == ' ' ? field : aiPutSign(difficultyLevel, board);
    } else if(difficultyLevel == 2)
    {
        //to do
        return 2;
    } else if(difficultyLevel == 3)
    {
        //to do
        return 3;
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我得到了分段错误错误.我只知道递归有一个问题,它会导致错误,但我不知道这是怎么回事以及如何修复它.

简而言之:board是9个字符的数组,拥有9个空格,每个玩家每次移动后都会在其中放置X和O符号.如果玩家(这里是计算机AI)试图在已经填充的字段上放置标志,则递归递增并且rand()生成另一个字段数.

oua*_*uah 6

不要放入srand(time(NULL));你的aiPutSign功能,你会在每次通话时获得相同的随机数.srand例如,在程序开始时调用一次.