我有一个结构:
struct points{
int i;
int x;
int y;
};
我制作了一个结构数组并将其命名为 temp。然后我做了另一个并命名为pt。假设我把一些内容放到临时文件中。如何将temp的元素复制到pt?
这是我的 memcpy 代码,编译器说这是段错误。请帮忙。
#define MAX_POINTS 400
struct points temp[MAX_POINTS];
/* Some code to input elements to array temp */
struct points pt[i]; /* array of struct with i elements*/
memcpy(&pt, &temp, sizeof (temp));
最佳答案
你必须小心,只复制两者中较小的那个,这里我假设 i < MAX_POINTS
memcpy(pt, temp, sizeof pt);
也正如其他人已经说过的 &
不正确。您需要一个指向第一个元素的指针,即 &pt[0]
例如,或者只是 pt
随着数组衰减到 &pt[0]
在这种情况下。
注意你的配置pt
如果 i
是可变长度数组是一个变量。如果i
,这可能很危险并导致堆栈溢出。变得太大了。所以如果你打算在这里使用大数组,最好使用 malloc
:
struct points* pt = malloc(sizeof(struct points[i]));
memcpy(pt, temp, sizeof(struct points[i]);
不幸的是,你不能使用 sizeof pt
对于 memcpy
.
关于c - 如何在c中的Struct中使用memcpy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17595797/