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

Вопрос:Если у меня есть два массива char, например: char one[200]; char two[200]; И тогда я хочу сделать третью, которая объединяет их, как я могу это сделать? Я пробовал: char three[400]; strcpy(three, one); strcat(three, two); Но это, похоже, не работает. Он делает, если one и two настроены следующим образом: char *one = "data"; char *two =

Вопрос:

Если у меня есть два массива 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»;

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

Спасибо

Лучший ответ:

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

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

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

Ответ №1

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

Ответ №2

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

Оцените статью
Добавить комментарий