如何将所有struct元素复制到C中的char *数组中

时间:2014-05-03 07:28:49

标签: c strcpy

我很抱歉,如果问题不清楚或听起来很愚蠢,但我对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等一样容易存储在其中。

2 个答案:

答案 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。