用c语言解数独游戏,有没有学长帮我看看我的程序哪里出问题了

我想要用C语言写一个代码,解数独游戏,数独的大致规则是,给出一个有九个小九宫格组成的大九宫格,上面有一些数字从1-9,我们要把大九宫格填满,并让每一行和每一列和每个小九宫格里的数字均不同。我写的代码及注释如下。但是没有达到我预期的效果。
#include
#include
#include
int main()
{
char a[9][9];
char b[81];
char c[9]={1,2,3,4,5,6,7,8,9};
char a1[9],b2[9],c3[8],d4[9],e5[9],f6[9],g7[9],h8[9],i9[9];
int t=0,n;
int A,B;

//先把已给的数填入,需要我们填的就填0 
for(int i=0;i<9;i++)
    for(int j=0;j<9;j++)
        scanf("%d",a);

//找到我们需要填空的位置,其下标放在b中 
for(int i=0;i<9;i++)
    {
        for(int j=0;j<9;j++)
        {
            if(a[i][j]==0)
            {
                b[t++]=j+i*9;
            }
        }    
    }
    
while(1)
{
    // 使用rand()%10,随机产生0-9数,有0则+1
    for(int i=0;iA=b[i]/9;
        B=b[i]%9;
        a[A][B]=rand()%10;
        if(a[A][B]==0)
        {
            a[A][B]+=1;
        }
    }
    
    //把每行赋给一个新数列 
    for(int i=0;i<9;i++)
        a1[i]=a[0][i];
    for(int i=0;i<9;i++)
        b2[i]=a[1][i];
    for(int i=0;i<9;i++)
        c3[i]=a[2][i];
    for(int i=0;i<9;i++)
        d4[i]=a[3][i];
    for(int i=0;i<9;i++)
        e5[i]=a[4][i];
    for(int i=0;i<9;i++)
        f6[i]=a[5][i];
    for(int i=0;i<9;i++)
        g7[i]=a[6][i];
    for(int i=0;i<9;i++)
        h8[i]=a[7][i];
    for(int i=0;i<9;i++)
        i9[i]=a[8][i];
    
    //判断每行是否是数字1-9 
    n=0;
    for(int i=0;i<9;i++)
    {
        if(strcmp(a[i],c))
            n++;
    }
    
    //判断每列是否是数字1-9 
    if(strcmp(l1,c))
        n++;
    if(strcmp(l2,c))
        n++;
    if(strcmp(l3,c))
        n++;
    if(strcmp(l4,c))
        n++;
    if(strcmp(l5,c))
        n++;
    if(strcmp(l6,c))
        n++;
    if(strcmp(l7,c))
        n++;
    if(strcmp(l8,c))
        n++;
    if(strcmp(l9,c))
        n++;
    //判断行和列的条件是否满足 
    if(n==18)
        break;
}
//打印九宫格 
for(int i=0;i<9;i++)
    for(int j=0;j<9;j++)
        printf("%d ",a[i][j]);
    printf("\n");

return 0;

}