所以我有一堆char *。本質上,我想彈出該堆棧並將其連接成一個由「/」分隔的長字符串並將其返回。但是我不知道如何正確地做到這一點。彈出一堆char *來創建一個新字符串並返回它
我想在C中做到這一點。因此,我的代碼就像這樣。 Stacksize返回堆棧的大小。道歉,如果它的不好,我真的不知道。謝謝
所以我有一堆char *。本質上,我想彈出該堆棧並將其連接成一個由「/」分隔的長字符串並將其返回。但是我不知道如何正確地做到這一點。彈出一堆char *來創建一個新字符串並返回它
我想在C中做到這一點。因此,我的代碼就像這樣。 Stacksize返回堆棧的大小。道歉,如果它的不好,我真的不知道。謝謝
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;
}
的sizeof(char)的被定義爲1,所以可以丟棄部分。 – 2014-11-25 05:14:19
請[不要轉換](http://stackoverflow.com/q/605845/2173917)'malloc()'的返回值。 – 2014-11-25 05:24:30
'output'在你malloc之後是未初始化的。你至少應該設置'output [0] ='\ 0''。另外還不清楚'stacksize()'是否返回了所需的大小,因爲你沒有給我們代碼。 – JS1 2014-11-25 05:27:09