【发布时间】:2018-05-17 16:05:49
【问题描述】:
我想将一个二维数组的内容复制到另一个二维 char 数组中。我将以下for 循环与memcpy 一起使用,但它没有按预期工作。所以我有两个问题。
- 这段代码有什么问题?和
-
有没有不使用迭代的方法?
for (int i = 0; i < count; i++) { memcpy(&buf_copy[i], buf[i], sizeof(buf[i])); }
buf 和 buf_copy 都是二维动态字符数组。
编辑:数组的声明
char **buf;
char **buf_copy;
编辑 2:这是分配给它们的内存的方式
void intit_buf()
{
buf = (char**)malloc(BUFFER * sizeof(*buf));
for (int i = 0; i < BUFFER; i++)
buf[i] = (char*)malloc(sizeof(char) * 33);
//initialize buf_copy
buf_copy = (char**)malloc(BUFFER * sizeof(*buf_copy));
for (int i = 0; i < BUFFER; i++)
buf_copy[i] = (char*)malloc(sizeof(char) * 33);
}
【问题讨论】:
-
“buf 和 buf_copy 都是二维动态字符数组” - 我强烈怀疑它们不是。指针业务正在进行,而你失败了,因为你不明白
sizeof在这种情况下会做什么。 -
当你说“二维动态字符数组”时,你的意思是
char **?然后你有多个问题。请创建Minimal, Complete, and Verifiable Example 向我们展示。 -
请发一个完整的例子!
-
你是如何为你的数组分配内存的?
-
@John_D 也显示为该代码。请发布一个最小示例完整示例。
标签: c pointers multidimensional-array dynamic-arrays memcpy