15

如果我有两个这样的 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";

有人知道如何解决这个问题吗?

谢谢

4

3 回答 3

8

如果 'one' 和 'two' 不包含 '\0' 终止的字符串,那么你可以使用这个:

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

这将复制一个和两个中的所有字符,而不管字符串终止字符 '\0'

于 2010-07-24T11:06:48.950 回答
4

strcpy 期望数组以 '\0' 结束。字符串在 C 中以零结尾。这就是为什么第二种方法有效而第一种方法无效的原因。

于 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 回答