Объединить два массива символов? - PullRequest
15 голосов
/ 24 июля 2010

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

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 ]

7 голосов
/ 24 июля 2010

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

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

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

4 голосов
/ 24 июля 2010

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

0 голосов
/ 18 марта 2017

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