C 递归地构建字符串

C 递归地构建字符串,c,string,recursion,C,String,Recursion,所以我试图递归地构建一个字符串,但我无法让它工作。我的代码的一部分是这样的: void afiseaza(TRNod *nod,char *x,int niv,int w) { if(nod==NULL) return; int i; *(x+niv)=w; *(x+niv+1)='\0'; // x[niv]=w,x[niv+1]='\0' if(nod->sf==1) printf("%s\n %d

所以我试图递归地构建一个字符串,但我无法让它工作。我的代码的一部分是这样的:

void afiseaza(TRNod *nod,char *x,int niv,int w)
{

    if(nod==NULL)
        return;
    int i;

    *(x+niv)=w;
    *(x+niv+1)='\0';
    // x[niv]=w,x[niv+1]='\0'

    if(nod->sf==1)
        printf("%s\n %d \n",x,niv);
    niv++;

    for(i=0;i<36;i++)
    {
        afiseaza(nod->fiu[i],&x,niv,i+87);
    }

}
void afiseaza(TRNod*nod,char*x,int niv,int w)
{
如果(nod==NULL)
返回;
int i;
*(x+niv)=w;
*(x+niv+1)='\0';
//x[niv]=w,x[niv+1]='\0'
如果(nod->sf==1)
printf(“%s\n%d\n”,x,niv);
niv++;
对于(i=0;ifiu[i],&x,niv,i+87);
}
}

基本上,TRNod是树的一个节点,如果该节点被分配,则它对应于字母表中的一个字母。

该函数采用
char*
(指向char的指针)作为第二个参数

void afiseaza(TRNod *nod,char *x,int niv,int w)
。。。但是您给它一个
char**
(指向char的指针):


实际上,编译器应该对此发出警告,程序员应该注意这些警告。

如果你把
afiseaza
放在一个循环中,你必须增加
niv
两次。
afiseaza(nod->fiu[i],&x,niv,i+87);