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