私がそのような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";
誰かがこれを修正する方法を知っていますか?
ありがとう
'one'および 'two'に '\ 0'で終了する文字列が含まれていない場合は、次のように使用できます。
memcpy(tree, one, 200);
memcpy(&tree[200], two, 200);
これにより、文字「\ 0」で終了する文字列を無視して、1つと2つの両方からすべての文字がコピーされます。
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