Kod w C++, ale jak w C?

0
void PrintTree(node * p, std::string b)
{
  if(!p->left) std::cout << p->ch << " " << b << std::endl;
  else
  {
    PrintTree(p->left, b + "0");
    PrintTree(p->right,b + "1");
  }
} 

Mam taki kod w C++, ale jak go przerobić do C jak nie ma tam klasy string?

Coś takiego spróbowałem ale nie działa tak jak powinno:

void PrintTree(node * p, char b[8])
{
  if(!p->left) 
      printf("%c %s\n", p->ch, b);
  else
  {
    char b0_copy[8]="";
    char b1_copy[8]="";
    strcpy(b0_copy, b);
    strcat(b0_copy, "0");
    strcpy(b1_copy, b);
    strcat(b1_copy, "1");
    PrintTree(p->left, b0_copy);
    PrintTree(p->right,b1_copy);
  }
} 
0

To niby C++ to jakiś WTF, czyli nie skompiluje się nawet.

0

Mój błąd. Już poprawiłem. Zacząłem modyfikować to i nie zauważyłem.

1
void PrintTree(node *p,char b[])
  {
   int len=strlen(b);
   if(!p->left) printf("%c %s\n",p->ch,b);
   else
     {
      b[len]='0';
      b[len+1]=0;
      PrintTree(p->left,b);
      b[len]='1';
      b[len+1]=0;
      PrintTree(p->right,b);
     }
  }
0

W linii:

b[len]='0'; 

występuje segmentation fault

0

Więc niepoprawnie wywołujesz tą funkcje.

0

Zrobiłem kopię tablicy b i działa.

edit: To też nic nie dało

0

No to źle zrobiłeś.

0

Jednak masz rację. Kopia tablicy też nic nie dawała. Poprawiłem wywoływanie funkcji i teraz już działa. Dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1