如何从结构数组中获取所有元素,并将它们添加到c中的字符串中? char str[向量总计(&final子句)]; 对于(int i=0;i

如何从结构数组中获取所有元素,并将它们添加到c中的字符串中? char str[向量总计(&final子句)]; 对于(int i=0;i,c,arrays,strcpy,C,Arrays,Strcpy,char str[vector_total(&final_子句)];太小 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

char str[vector_total(&final_子句)];
太小

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
//仅打印-c(最后一个)

代码将vector\u get()复制到相同的位置,因此这是意料之中的


可能使用
strcat()
str[0]=0;
作为第一个
strcat(str,…
)来工作。

char str[vector_total(&final_子句)];
太小

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
//仅打印-c(最后一个)

代码将vector\u get()复制到相同的位置,因此这是意料之中的


可能使用
strcat()
str[0]=0;
作为第一个
strcat(str,…
来工作。

您需要使用
strcat
而不是
strcpy
vector\u get()的结果替换
str
的内容
strcat
连接
str
vector\u get()

这将解决您的问题:

size_t len = vector_total(&final_clause);
char str[len*2 + 1]; // might be enough
char str[向量总计(&final子句)];
char*result=NULL;
str[vector_total(&final_子句)]='\0;

对于(int i=0;i您需要使用
strcat
而不是
strcpy
strcpy
strcat
串联
str
vector\u get()时,用
vector\u get()
的结果替换
str
的内容

这将解决您的问题:

size_t len = vector_total(&final_clause);
char str[len*2 + 1]; // might be enough
char str[向量总计(&final子句)];
char*result=NULL;
str[vector_total(&final_子句)]='\0;

对于(int i=0;i请创建一个。请创建一个。需要
char*result==NULL;
以便以后
realloc()
工作。
realloc()
不分配空字符-1太小。首先
strcat(str,
是一个问题,因为
str
不是字符串。(否\0)。分配丢失,原因是
result=strcat…
Hi,感谢您的帮助。第一个版本似乎还可以,并且使用了上面提到的一些调整chux-Restore Monica。str[vector_total(&final_子句)]=NULL;
,我不确定这行函数。@thome.steve我在键入这行时出错,它通常是一个“\0”来表示字符串的结尾。需要
char*result==NULL;
以便以后
realloc()
工作。
realloc()
不分配空字符-1太小。首先
strcat(str,
是一个问题,因为
str
不是一个字符串。(否\0)。分配因
result=strcat而丢失…
您好,谢谢您的帮助。第一个版本似乎还可以,并且工作得很好,有一些调整chux-restore Monica提到。
str[vector_total(&final_子句)]=NULL;
,我不确定这行函数。@thome.steve我在键入这行时出错,它通常是一个“\0”来表示字符串的结尾。谢谢,这一组工作得很好。起初我不确定是什么
str[0]=0
确实如此,但它似乎在开始时清除了一些随机字符。@thome.steve第一次调用
strcat(str,…)
时,
str
需要是一个空字符串。这是通过
str[0]=0;
完成的。感谢这一系列操作很好。我起初不确定
str[0]是什么=0
没有,但它似乎在开始时清除了一些随机字符。@thome.steve第一次调用
strcat(str,…)
时,
str
需要是空字符串。这是通过
str[0]=0;
实现的。