这是一个数组:
char *a[]={"I", "LOVE", "C", "PROGRAMMING"};
如何在c中将这个数组聚合成一个字符串?
也就是说,
char b[]="I LOVE C PROGRAMMING";
我曾尝试为每个字符串使用 memcpy,但我不知道要在彼此之间添加空格。
int width[4];
for(int i=0; i<4; i++)
width[i]=strlen(a[i]);
//aggregate the msg length
int agg_len[4];
int len_w = 0
for (no = 0; no < 4; no++) {
len_w += width[no];
agg_len[no] = len_w;
}
//compose msg
memcpy(b, a[0], width[0]);
for(idx = 1; idx < 4; idx++)
{
memcpy(b+agg_len[idx], a[idx], width[idx]);
}
结果是“ILOVECPROGRAMMING”
如何将其修复为“我喜欢 C 编程”
我曾尝试添加空格,但在使用 memcpy 时失败,内存地址错误
因为每一步都需要加1个长度(""需要1个长度)
最佳答案
一个解决方案是找到数组中字符串的数量 (num) 并使新数组具有额外的 num - 1 长度,这样当您撰写消息时,只需在完成复制每个单词后添加空格.
关于c - 如何在c中聚合字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28037235/