Создайте strdup_even()
.
Выделите память, необходимую для копирования строки, и, возможно, еще 1, чтобы сделать "ровным".
char *strdup_even(const char *str) {
size_t len = strlen(str) + 1; // Size needed for the _string_
size_t len2 = len + len % 2; // Even allocation size
char *copy = malloc(len2);
if (copy) {
memcpy(copy, str, len);
if (len2 > len) {
copy[len] = '\0';
}
}
return copy;
}
Пример использования
struct msg m;
m.first = strdup_even("hi");
m.second = strdup_even("hello");