Объединить два массива char?

Если у меня есть два массива char, например:

char one[200];
char two[200];

И тогда я хочу сделать третью, которая объединяет их, как я могу это сделать?

Я пробовал:

char three[400];
strcpy(three, one);
strcat(three, two);

Но это, похоже, не работает. Он делает, если one и two настроены следующим образом:

char *one = "data";
char *two = "more data";

Кто-нибудь понял, как это исправить?

Спасибо

Ответы

Ответ 1

Если "один" и "два" не содержат строку с завершением "\ 0", вы можете использовать это:

memcpy(tree, one, 200);
memcpy(&tree[200], two, 200);

Это скопирует все символы из одного и двух без учета строки, заканчивающейся char '\ 0'

Ответ 2

strcpy ожидает, что массивы будут завершены '\ 0'. Строки заканчиваются нулем в C. Вот почему работает второй подход и не работает.

Ответ 3

Вы можете легко использовать sprintf

char one[200] = "data"; // first bit of data
char two[200] = "more data"; // second bit of data
char three[400]; // gets set in next line
sprintf(three, "%s %s", one, two); // this stores data