C中的递归不返回字符串值

C中的递归不返回字符串值,c,recursion,C,Recursion,我正在学习C语言,为此我决定写一个数独解算器。我很难让solve函数返回已解决的电路板,我认为问题在于递归函数调用 我将板作为字符串传入,找到板中第一个“0”的索引,并使用该索引为该位置构建可能值的列表。然后我迭代各种可能性,复制原始电路板,并用可能性替换零,然后递归地将新电路板传递给solve函数。代码如下: char *solve(char *board) { int zero = strcspn(board, "0"); if(zero > 80) {

我正在学习C语言,为此我决定写一个数独解算器。我很难让solve函数返回已解决的电路板,我认为问题在于递归函数调用

我将板作为字符串传入,找到板中第一个“0”的索引,并使用该索引为该位置构建可能值的列表。然后我迭代各种可能性,复制原始电路板,并用可能性替换零,然后递归地将新电路板传递给solve函数。代码如下:

char *solve(char *board)
{
    int zero = strcspn(board, "0");
    if(zero > 80) {
        return board;
    } else {
        char *possibilities = getPossibilities(zero, board);
        if(possibilities != '\0') {
            for(int i = 0; i < strlen(possibilities); i++) {
                char *new_string = malloc(strlen(board) * sizeof(char));
                memcpy(new_string, board, strlen(board));
                new_string[zero] = possibilities[i];
                return solve(new_string);
            }
        }
    }

}

我看不清这个问题。该计划的全部要点如下所示。我会喜欢任何输入。提前谢谢你

char*new_string=malloc(strlen(board)*sizeof(char))

您需要为“\0”终止字符分配,并将其更改为


char*new_string=malloc(strlen(board)+1)

并将
memcpy
更改为
strcpy

char*strcpy(新字符串,板)

The string is �96245781100060004504810390007950043030080000405023018010630059059070830003590007