从 2d 动态字符数组复制到 c 中的另一个 2d 动态数组
Copy from 2d dynamic char array to another 2d dynamic array in c
我想将一个二维数组的内容复制到另一个二维字符数组中。我将以下 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);
}
What is wrong with this code?
函数调用的第一个和最后一个参数。
改变这个:
memcpy(&buf_copy[i], buf[i], sizeof(buf[i]));
对此:
memcpy(buf_copy[i], buf[i], 33);
因为你需要给出列的大小,而不是指针的大小!
此外,请注意您需要传递 buf_copy
,就像您对 buf
所做的一样,而不需要获取它的地址或其他内容,因为 memcpy()
需要它的两个指针第一个参数,buf_copy[i]
和 buf[i]
已经是指针。
Is there a way to do it without use of iteration?
没有 ireation 就无法完成,因为 malloc()
可能 没有 返回连续内存。在 C / C++ How to copy a multidimensional char array without nested loops?
中阅读更多内容
PS:与您的问题无关,但总的来说:Do I cast the result of malloc?不!
我想将一个二维数组的内容复制到另一个二维字符数组中。我将以下 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);
}
What is wrong with this code?
函数调用的第一个和最后一个参数。
改变这个:
memcpy(&buf_copy[i], buf[i], sizeof(buf[i]));
对此:
memcpy(buf_copy[i], buf[i], 33);
因为你需要给出列的大小,而不是指针的大小!
此外,请注意您需要传递 buf_copy
,就像您对 buf
所做的一样,而不需要获取它的地址或其他内容,因为 memcpy()
需要它的两个指针第一个参数,buf_copy[i]
和 buf[i]
已经是指针。
Is there a way to do it without use of iteration?
没有 ireation 就无法完成,因为 malloc()
可能 没有 返回连续内存。在 C / C++ How to copy a multidimensional char array without nested loops?
PS:与您的问题无关,但总的来说:Do I cast the result of malloc?不!