我很抱歉,如果问题不清楚或听起来很愚蠢,但我对C / C ++编程很陌生,所以请保持温和
我有这样的结构
struct foo
{
int a = 05;
char b;
char c;
}foo_var;
我有一个char指针数组
char *Arrpointer[sizeof(foo)];
.. 然后我使用foo_var.b和foo_var.c
初始化b和c我想将所有内容,即a,b,c值复制到此* Arrpointer
中我想过使用strcpy
strcpy(Arrpointer, ????)
但是你可以看到我被卡住了 任何帮助将不胜感激
此Arrpointer也是动态意义,任何不。结构内容应该像Struct foo,bar等一样容易存储在其中。
答案 0 :(得分:0)
由于两个变量都不是字符串,因此strcpy
不合适; memcpy
是您所需要的。但是,您有一个指定的指针数组,并且不指向任何有效的指针。
Arrpointer[n] = malloc( sizeof(foo_var) ) ;
memcpy( Arrpointer[n], foo_var, sizeof(foo_var) ) ;
使用与Arrpointer
中的字节一样多的元素创建struct foo
似乎不太可能是您的意图。另一个问题是,一旦你复制了结构,就不再有任何信息来确定存储的结构或它们的大小,所以整个“设计”是可疑的,但如果问题只是根据标题而不是然后比那个有点混乱的身体:
memcpy( pointer_to_destination, pointer_to_source, size_of_data ) ;
是通用答案。
答案 1 :(得分:0)
您不能使用strcpy复制int或char。如果要将数据格式化为内存中的字符串,可以使用snprintf http://www.cplusplus.com/reference/cstdio/snprintf/。
result_string = malloc(MY_SIZE)
snprintf(result_string, MY_SIZE, "%d %c %c", foo_var.a, foo_var.b, foo_var.c)
你的Arrpointer绝不是动态的 - 它是一个固定大小的数组。 如果你想要动态大小的数组,你需要了解malloc和free。