c - 如何在c中聚合字符串数组

标签 c arrays string

这是一个数组:

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/

相关文章:

c++ - C 和 C++ 中 bool 值的 sizeof 运算符的输出差异

c - 在C编程中使用结构体的双指针将矩阵从文本文件读取到二维数组中

在 C 中创建一个新的、已停止的进程

java - 需要扫描仪输入阵列

c++ - BSTR 到 std::string (std::wstring),反之亦然

PHP:将字符串拆分为数组,例如没有分隔符的 explode

javascript - 使用 jQuery 进行字符串操作

c - 错误: expected constructor,析构函数,或 '('之前的类型转换

javascript - 如何将 'attach' ASP.NET 字节数组转换为表单上的 'file' 类型输入字段?

arrays - 在matlab中设置稀疏矩阵的最快方法