2014-11-25 44 views
1

所以我有一堆char *。本質上,我想彈出該堆棧並將其連接成一個由「/」分隔的長字符串並將其返回。但是我不知道如何正確地做到這一點。彈出一堆char *來創建一個新字符串並返回它

我想在C中做到這一點。因此,我的代碼就像這樣。 Stacksize返回堆棧的大小。道歉,如果它的不好,我真的不知道。謝謝

+0

的sizeof(char)的被定義爲1,所以可以丟棄部分。 – 2014-11-25 05:14:19

+0

請[不要轉換](http://stackoverflow.com/q/605845/2173917)'malloc()'的返回值。 – 2014-11-25 05:24:30

+0

'output'在你malloc之後是未初始化的。你至少應該設置'output [0] ='\ 0''。另外還不清楚'stacksize()'是否返回了所需的大小,因爲你沒有給我們代碼。 – JS1 2014-11-25 05:27:09

回答

1

stacksize函數是否返回連接字符串的總長度或堆棧中元素的數量?

在情況下,它返回炭的指針在需要預先分配串聯的字符串的總大小的堆棧數*:

struct stack * test = new_stack(); 
struct stacknode = test->head; 
unsigned int totalsize = 0; 

while (stacknode != NULL) { 
    totalsize += strlen(stacknode->name); 
    stacknode = stacknode->nextnode; 
} 

char* output = malloc(totalsize + 1); // Allow 1 byte for the \0 character. 
*output = 0; // strcat needs to know where output ends. 
stacknode = test->head; 

while(stacknode != NULL) { 
    strcat(output, stacknode->name); 
    stacknode = stacknode->nextNode; 
} 
+1

你太棒了!完美的作品 – jjamzn 2014-11-25 14:26:58

+1

@jjamzn不客氣。如果您不需要進一步幫助,請將問題標記爲已回答。 – ezorita 2014-11-26 16:42:17

相關問題