Вопрос:
Если у меня есть два массива 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