web-dev-qa-db-ja.com

2つのchar配列を連結しますか?

私がそのような2つのchar配列を持っている場合:

char one[200];
char two[200];

そして、これらを連結する3分の1を作成したいのですが、どうすればよいでしょうか。

私が試してみました:

char three[400];
strcpy(three, one);
strcat(three, two);

しかし、これはうまくいかないようです。 onetwoが次のように設定されている場合に実行されます。

char *one = "data";
char *two = "more data";

誰かがこれを修正する方法を知っていますか?

ありがとう

15
ingh.am

'one'および 'two'に '\ 0'で終了する文字列が含まれていない場合は、次のように使用できます。

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

これにより、文字「\ 0」で終了する文字列を無視して、1つと2つの両方からすべての文字がコピーされます。

strcpyは、配列が「\ 0」で終了することを想定しています。文字列はCでゼロで終了します。そのため、2番目のアプローチは機能し、最初のアプローチは機能しません。

4
EricSchaefer

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
0
OverloadedCore