2010-08-05 125 views
0

在下面的代碼中,我想將'pre'中的字符串複製到數組'word',以便稍後可以打印數組'word',但它顯示NONPORTABLE CONVERSION錯誤。嘗試使用strcpy()做它,但它的功能。做任何其他方式?我想它生成的每一次出現在「前」的字符串存儲到一個數組..將字符指針分配給字符指針數組

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]); 
} 
} 

謝謝。

回答

1

如果你想單詞是字符串數組,那麼它應該被聲明爲:

char **word; //and allocated accordingly 

如果你想詞只是前期的副本,你應該有更多的東西一樣

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

如果我理解正確的問題...

你不可移植的轉換錯誤是因爲

word[j]=pre; 

試圖一個char*分配給char

你沒有說什麼對你的strcpy()沒有任何效果,但是我假設,在給出顯示代碼的情況下,你沒有爲char *word分配任何內存,並試圖將其複製到NULL中。相反,

word=(char*)malloc(strlen(pre)+1); 
    if (word) strcpy(word,pre); 
+0

啊,我重新閱讀(在提交後立即),並看到代碼底部的註釋行。 @Matthieu是對的, static char **單詞; 是你想要的,malloc()/ realloc()對於原始字符串數組以及每個strcpy()所需的字符串都是必需的。請注意,如果您每次調用該函數時都將此數組構建到該數組上(如果僅在該函數中需要它),它應該是靜態的。 – Crwth 2010-08-05 20:06:26