У меня есть такая структура:
typedef struct myStruct
{
int attr;
char *name;
size_t nameSize;
}
Я хочу сериализовать ее и сериализовать. Я нашел ответы, но все они использовали более простую структуру (без указателей). Кроме того, в своей функции я должен получить указатель на структуру, а не на саму структуру. Поэтому я не могу использовать sizeof.
Как я могу сериализовать это в буфер, чтобы потом десериализовать его?
int serializeData(myStruct *componentInfo, void *buffer, size_t bufferSize, size_t *result)
{
int dataSize = 0;
dataSize += sizeof(int);
dataSize += strlen(componentInfo->name);
dataSize += sizeof(size_t);
char data[dataSize+1];
int offset =0;
memcpy(data, &componentInfo->attr, sizeof(int));
offset+=sizeof(int);
memcpy(data + offset, &componentInfo->nameSize, sizeof(size_t));
offset+= sizeof(size_t);
memcpy(data + offset, componentInfo->name, componentInfo->nameSize);
offset+= componentInfo->nameSize;
printf("%s",data);
printf("a %zu",strlen(data));
return 1;
}