C 将字符指针指定给字符指针数组

C 将字符指针指定给字符指针数组,c,C,在下面的代码中,我希望将“pre”中的字符串复制到数组“word”中,以便稍后打印数组“word”,但它显示了不可移植的转换错误。。尝试使用strcpy()执行此操作,但无效。还有其他方法吗?我想在每次生成“pre”时将它存储到数组中 void print(char *pre,struct dic * root,int depth) { int i=0,flag=0,int j=0; char *word; for(;i<27;i++) { if(root->node[i])

在下面的代码中,我希望将“pre”中的字符串复制到数组“word”中,以便稍后打印数组“word”,但它显示了不可移植的转换错误。。尝试使用strcpy()执行此操作,但无效。还有其他方法吗?我想在每次生成“pre”时将它存储到数组中

void print(char *pre,struct dic * root,int depth)
{
 int i=0,flag=0,int j=0;
 char *word;
for(;i<27;i++)
{
  if(root->node[i])
  {
    pre[depth]='a'+i;
    flag=1;
    print(pre,root->node[i],depth+1);
    pre[depth]=0;
  }
}
if(flag == 0)
{
   pre[depth]=0;
   printf("\n%s\n",pre);
//j is declared globally

***word[j]=pre;***


 //printf("\nWord[%d]=%s\n",j,word[j]);
 }
}
void打印(char*pre,struct dic*root,int depth)
{
int i=0,flag=0,int j=0;
字符*字;
对于(;inode[i])
{
前[深度]='a'+i;
flag=1;
打印(前,根->节点[i],深度+1);
预[深度]=0;
}
}
如果(标志==0)
{
预[深度]=0;
printf(“\n%s\n”,pre);
//j是全球宣布的
***字[j]=pre***
//printf(“\n单词[%d]=%s\n”,j,单词[j]);
}
}

谢谢..

如果希望word是字符串数组,则应声明为:

 char **word; //and allocated accordingly
如果你想让word只是pre的一个副本,你应该有更像

 word[j] = pre[j]; // in a loop, but using strcpy or strncpy would be just as good...

如果我正确理解这个问题

您的不可移植转换错误是因为

word[j]=pre;
正在尝试将
char*
分配给
char

您没有说您的
strcpy()
,但我假设,鉴于显示的代码,您没有为
char*word
分配任何内存,并且正在尝试复制到NULL。相反

  word=(char*)malloc(strlen(pre)+1);
  if (word) strcpy(word,pre);
啊,我重读了一遍(在提交之后),在代码的底部看到了注释掉的行@马修是对的,静态字符**字;是您想要的,malloc()/realloc()对于原始字符串数组和strcpy()插入的每个字符串都是必需的。请注意,如果您每次调用函数时都在这个数组上构建(并且如果它只在函数中需要),那么它应该是静态的。