Нет лучшего способа сделать это, кроме того, что вам не нужно сначала копировать test
в src
.
Вам также необходимо добавить нулевые терминаторы ко всем строкам. Вероятно, было бы лучше написать функцию, которая выполняет оба шага: strncpy()
и добавление нулевого терминатора.
function copy_n(char *dest, char *src, size_t offset, size_t len) {
strncpy(src+offset, dest, len);
dest[len] = '\0';
}
int main(void) {
char* test = "ABBCCCD";
copy_n(dst.a, test, 0, 1);
copy_n(dst.b, test, 1, 2);
copy_n(dst.c, test, 3, 3);
copy_n(dst.d, test, 6, 1);
printf("dst.a: %s\n", dst.a);
printf("dst.b: %s\n", dst.b);
printf("dst.c: %s\n", dst.c);
printf("dst.d: %s\n", dst.d);
}