将struct复制到char数组中

yiw*_*wei 8 c struct

我正在学习C并对结构有疑问.

我有一个

struct myStruct {
    char member1[16];
    char member2[10];
    char member3[4];
};
Run Code Online (Sandbox Code Playgroud)

这应该至少需要30个字节的内存来存储.是否可以将所有这些数据复制到变量中char foo[30]?语法是什么?

Car*_*rum 14

你不能直接复制整个东西,因为编译器可能会随意决定如何填充/打包这个结构.你需要三个memcpy电话:

struct myStruct s;
// initialize s
memcpy(foo,                                       s.member1, sizeof s.member1);
memcpy(foo + sizeof s.member1,                    s.member2, sizeof s.member2);
memcpy(foo + sizeof s.member1 + sizeof s.member2, s.member3, sizeof s.member3);
Run Code Online (Sandbox Code Playgroud)


Ker*_* SB 5

的大小struct myStructsizeof(struct myStruct),仅此而已。至少为30,但可以更大。

你可以这样做:

char foo[sizeof(struct myStruct)];

struct myStruct x; /* populate */

memcpy(foo, &x, sizeof x);
Run Code Online (Sandbox Code Playgroud)