如何从结构数组中获取所有元素,并将它们添加到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;
实现的。