История изменений
Исправление XMs, (текущая версия) :
Я тут подумал и, кажется, понял, что тебе нужно:
typedef struct
{
size_t size;
// Остальные служебные поля
} my_struct;
void *my_struct_set_string(void **mystruct, char *str)
{
assert(mystruct);
assert(str);
size_t count = strlen(str);
…
my_struct *tmp = realloc(*mystruct, sizeof(my_struct) + count);
if (tmp == NULL)
return NULL;
*mystruct = tmp;
tmp->size = count;
…
memcpy(tmp + 1, str, count);
return tmp;
}
char *my_struct_get_string(void *mystruct, size_t *count)
{
assert(mystruct);
assert(count);
my_struct *metainfo = mystruct;
void *data = metainfo + 1;
*count = metainfo->size;
return data;
}
…
size_t arraysize = get_array_size();
void *mystructs[arraysize];
for (size_t i = 0; i < arraysize; ++i)
{
…
}
Исправление XMs, :
Я тут подумал и, кажется, понял, что тебе нужно:
typedef struct
{
size_t size;
// Остальные служебные поля
} my_struct;
void *my_struct_set_string(void **mystruct, char *str)
{
assert(mystruct);
assert(str);
size_t count = strlen(str);
…
my_struct *tmp = realloc(*mystruct, sizeof(my_struct) + count);
if (tmp == NULL)
return NULL;
*mystruct = tmp;
tmp->size = count;
…
return tmp;
}
char *my_struct_get_string(void *mystruct, size_t *count)
{
assert(mystruct);
assert(count);
my_struct *metainfo = mystruct;
void *data = metainfo + 1;
*count = metainfo->size;
return data;
}
…
size_t arraysize = get_array_size();
void *mystructs[arraysize];
for (size_t i = 0; i < arraysize; ++i)
{
…
}
Исходная версия XMs, :
Я тут подумал и, кажется, понял, что тебе нужно:
typedef struct
{
size_t size;
// Остальные служебные поля
} my_struct;
void *my_struct_set_string(void **mystruct, char *str)
{
assert(mystruct);
assert(str);
size_t count = strlen(str);
…
my_struct *tmp = realloc(mystruct, sizeof(my_struct) + count);
if (tmp == NULL)
return NULL;
*mystruct = tmp;
tmp->size = count;
…
return tmp;
}
char *my_struct_get_string(void *mystruct, size_t *count)
{
assert(mystruct);
assert(count);
my_struct *metainfo = mystruct;
void *data = metainfo + 1;
*count = metainfo->size;
return data;
}
…
size_t arraysize = get_array_size();
void *mystructs[arraysize];
for (size_t i = 0; i < arraysize; ++i)
{
…
}