gpt4 book ai didi

c - 弹出一堆 char* 以创建一个新字符串并返回它

转载 作者:太空宇宙 更新时间:2023-11-04 03:42:53 25 4
gpt4 key购买 nike

所以我有一堆 char*。本质上我想弹出那个堆栈并将它连接成一个由“/”分隔的长字符串并返回它。但是我不知道如何正确地做到这一点。

我正尝试在 C 中执行此操作。所以对于我的代码,它是这样的。 Stacksize 返回堆栈的大小。抱歉,如果不好,我真的不知道....

struct stack* test = new_stack();
struct stacknode = test->head;
char* output = (char*)malloc(sizeof(char) * stacksize(test));

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

非常感谢任何帮助。谢谢

最佳答案

stacksize函数返回的是拼接字符串的总长度还是栈中元素的个数?

如果它返回堆栈中 char* 指针的数量,您需要预先分配连接字符串的总大小:

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;
}

关于c - 弹出一堆 char* 以创建一个新字符串并返回它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27119184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com