如何从结构数组中获取所有元素,并将它们添加到 c 中的字符串中?

How do I get all elements from a struct array, and add them into a string in c?

char str[vector_total(&final_clause)];
    for(int i = 0; i<vector_total(&final_clause); i++)
    {
          printf("%s  ", (char*) vector_get(&final_clause,i)); // outputs b  a  -c  a  a  -c  -c
          strcpy(str, (char*) vector_get(&final_clause,i));
    } 
    printf("%s", str); //only prints -c (last )
    remove_repeatation(str); // removes repeats. Expected: b a-c

显然它取代了 'str' everyloop。那么解决这个问题的最佳方法是什么?不确定这是否是一个简单的问题,但我只是无法使用不同的方法来破解它。

char str[vector_total(&final_clause)];太小了。

size_t len = vector_total(&final_clause);
char str[len*2 + 1]; // might be enough

//only prints -c (last )

代码将 vector_get() 复制到同一位置,因此这是预期的。

也许使用 strcat()str[0] = 0; 让第一个 strcat(str, .. 起作用。

您需要使用 strcat 而不是 strcpystrcpystrcat连接strvector_get()时,用vector_get()的结果替换str的内容。

这应该可以解决您的问题:

char str[vector_total(&final_clause)];
char *result = NULL;
str[vector_total(&final_clause)] = '[=10=];
    for(int i = 0; i<vector_total(&final_clause); i++)
    {
          printf("%s  ", (char*) vector_get(&final_clause,i)); // outputs b  a  -c  a  a  -c  -c
          result = realloc(result, (sizeof(char) * strlen(vector_get(&final_clause,i));
          result = strcat(result, (char*) vector_get(&final_clause,i));
    } 
    printf("%s", str);
    remove_repeatation(str);