Скопировать элемент структуры в массив - PullRequest
1 голос
/ 03 июня 2011
struct {
    char a[10];
    char b[5];
    char c[10];
} info;

Как объединить все элементы данных struct в один массив?

Ответы [ 2 ]

5 голосов
/ 03 июня 2011

С memcpy():

// Assign a buffer big enough to hold everything
char *buf = malloc(sizeof(info.a) + sizeof(info.b) + sizeof(info.c));
// Get a pointer to the beginning of the buffer
char *p = buf;
// Copy sizeof(info.a) bytes of stuff from info.a to p
memcpy(p, info.a, sizeof(info.a));
// Advance p to point immediately after the copy of info.a
p += sizeof(info.a);
// And so on...
memcpy(p, info.b, sizeof(info.b));
p += sizeof(info.b);
memcpy(p, info.c, sizeof(info.c));
0 голосов
/ 03 июня 2011

Вы можете использовать sprintf. Эта функция "печатает" строку в anoter:

int struct_size = sizeof(info);
char *result = (char*)malloc(sizeof(char)*struct_size);
sprintf(result, "%s%s%s", info.a, info.b, info.c);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...