Kod w C++, ale jak w C?

Odpowiedz Nowy wątek
2014-12-28 20:58
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);
  }
} 
edytowany 1x, ostatnio: jarekbutek, 2014-12-28 21:15

Pozostało 580 znaków

2014-12-28 21:05
0

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


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-12-28 21:15
0

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

Pozostało 580 znaków

2014-12-28 21:21
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);
     }
  }

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-12-28 22:08
0

W linii:

b[len]='0'; 

występuje segmentation fault

Pozostało 580 znaków

2014-12-28 22:09
0

Więc niepoprawnie wywołujesz tą funkcje.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-12-28 22:12
0

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

edit: To też nic nie dało

edytowany 1x, ostatnio: jarekbutek, 2014-12-30 16:35

Pozostało 580 znaków

2014-12-28 22:14
0

No to źle zrobiłeś.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-12-30 16:34
0

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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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