15

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

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

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

私が試してみました:

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

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

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

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

ありがとう

4

3 に答える 3

8

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

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

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

于 2010-07-24T11:06:48.950 に答える
4

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

于 2010-07-24T11:04:47.163 に答える
0

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
于 2017-03-18T09:59:51.020 に答える