c - 如何在 C 中将所有结构体元素复制到 char * 数组中

标签 c strcpy

如果问题不清楚或听起来很愚蠢,我很抱歉,但我对 C/C++ 编程很陌生,所以请温柔点

我有一个这样的结构

struct foo
{
    int a = 05;
    char b;
    char c;
}foo_var;

我有一个字符指针数组

char *Arrpointer[sizeof(foo)];

.. 然后我使用 foo_var.b 和 foo_var.c 初始化了 b 和 c

我想将所有内容,即 a、b、c 值复制到这个 *Arrpointer

我想到使用strcpy

strcpy(Arrpointer, ????)

但如你所见,我被困住了 任何帮助将不胜感激

此外,这个 Arrpointer 是动态的,意味着任何 no。结构内容应该很容易存储在其中,例如 Struct foo、bar 等。

最佳答案

由于两个变量都不是字符串,因此 strcpy 不合适; memcpy 就是您所需要的。但是,您有一个未初始化的指针数组,并且不指向任何有效的内容。

Arrpointer[n] = malloc( sizeof(foo_var) ) ;
memcpy( Arrpointer[n], foo_var, sizeof(foo_var) ) ;

使用与 struct foo 中的字节数一样多的元素创建 Arrpointer 似乎不太可能是您想要的。另一个问题是,一旦复制了结构,您就不再有任何信息来确定存储的结构或它们的大小,因此整个“设计”是可疑的,但如果问题只是按照标题而不是比当时有点困惑的 body :

memcpy( pointer_to_destination, pointer_to_source, size_of_data ) ;

是通用答案。

关于c - 如何在 C 中将所有结构体元素复制到 char * 数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23441529/

相关文章:

c - 将十六进制数解释为十进制

C execlp() 没有正确解析参数字符串

c - 破坏原始字符串的 for 循环

c - `strcpy(x+1, SEQX)` 是做什么的?

c - 如何将 array_src 复制到> destination_array,从目标的某个索引开始? (使用 strcpy() )

c - 从 C++/CLI 到 C 的字节数组

c - 简单的C scanf 不起作用?

c++ - 不明白C++中的strcpy

c - 如何将当前的 strcpy 转换为 strcpy_s?

c - 这些字符串是否为 fopen() 正确连接?