2016-03-08 71 views
1

我想了解如何在我的鏈接列表中添加元素,但添加字符串後它們都是空字符串。似乎有一些問題,當我設置終止字符串字符,但我相信我正在複製它,並將副本添加到鏈接列表。這是我的代碼。C值在添加後從鏈接列表中移除

 char name[256] = " "; 
     while (serial.available()) { 
      char text= serial.read(); 
      Print(text); 
      if (text== '\n') { 
       char copy[256]; 
       strcpy(copy, name); 
       add(copy, list); //adds copy to a linkedlist named list 
       name[0] = '\0'; 
      } else { 
       append(name, text); 
      } 
     } 

函數調用後,鏈表中有一堆元素,但它們都是空字符串。任何想法可能是什麼問題?

+0

也許顯示一些實際編譯的代碼?首先製作'char text',然後直接使用'txt'。這是故意的嗎?另外,你在棧上分配'copy',這個''if'塊之外不會存在。 – Qix

+0

儘管相當C-ISH,你的代碼是C++。這些是不同的語言。已編輯標籤。 –

+0

它適用於C而不是C++。 – yetanotherposter

回答

1

問題是這樣的聲明:

char copy[256]; 

copy是一個局部變量,所以將其存儲供以後使用是不允許的。

char *copy = new char[256]; 

得到這個問題固定的更換。