Объединить два 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";

кто-нибудь знает, как это исправить?

спасибо

3 ответов


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

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

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


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


вы можете легко использовать функции 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