Присвоение символьного указателя массиву символьных указателей - PullRequest
0 голосов
/ 05 августа 2010

В этом приведенном ниже коде я хочу скопировать строку из 'pre' в массив 'word', чтобы потом можно было напечатать массив 'word', но он показывает ошибку NONPORTABLE CONVERSION .. Попытался сделать это с помощью 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]);
 }
}

Спасибо ..

Ответы [ 2 ]

1 голос
/ 05 августа 2010

Если вы хотите, чтобы слово было массивом строк, то оно должно быть объявлено как:

 char **word; //and allocated accordingly

Если вы хотите, чтобы слово просто было копией пред, у вас должно быть что-то более похожее на

 word[j] = pre[j]; // in a loop, but using strcpy or strncpy would be just as good...
0 голосов
/ 05 августа 2010

Если я правильно понял вопрос ...

Ваша ошибка НЕПОРТАЦИОННОЙ КОНВЕРСИИ потому что

word[j]=pre;

пытается присвоить char* char.

Вы не сказали, что не сработало в вашем strcpy(), но я предполагаю, что с учетом показанного кода вы не выделили память для char *word и пытались скопировать в NULL , Вместо

  word=(char*)malloc(strlen(pre)+1);
  if (word) strcpy(word,pre);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...