2010-08-05 3 views
0

В этом нижеследующем коде я хочу скопировать строку в 'pre' в массив 'word', чтобы я мог напечатать массив «слово» позже, но он показывает ошибку НЕПОРТОВОЙ КОНВЕРСИИ. делая это с помощью 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

Ahh, я перечитал (сразу после отправки) и увидел пропущенную строку внизу кода. @Matthieu прав, что static char ** word; - это то, что вы хотите, с malloc()/realloc(), как необходимо как для исходного массива строк, так и для каждой строки, в которую вы входите strcpy(). Обратите внимание, что он должен быть статичным, если вы строите этот массив каждый раз, когда вы вызываете функцию (и если она нужна только внутри функции). – Crwth

Смежные вопросы