如何连接指针数组

时间:2014-03-30 03:12:41

标签: c memory concatenation

我正在编写一个程序,我需要连接两个数组。

例如,如果我有:

  int max =100;
  char *append = "Hello";
  char *pStr = malloc(max);

如何将append连接到pStr

3 个答案:

答案 0 :(得分:2)

使用可以在以下两者之间进行选择:

char *pStr = malloc(max);
char* str1 = "Hello ";
char* str2 = "Wor";
char* str3 = "ld";
strcpy(pStr, str1);
strcat(pStr, str2);
strcat(pStr, str3);

char *pStr = malloc(max);
char* str1 = "Hello ";
char* str2 = "Wor";
char* str3 = "ld";
pStr[0] = '\0';
strcat(pStr, str1);
strcat(pStr, str2);
strcat(pStr, str3);

在你的例子中

strcpy(pStr, append);

pStr[0] = '\0';
strcat(pStr, append);

strcpy不需要\0。它只是复制目标字符串(加上' \ 0') strcat目标字符串连接到源字符串。来源必须为空终止这就是pStr[0] = '\0'的原因。

max必须足以容纳所有字符串加上终止字符\0

瓦尔特

答案 1 :(得分:1)

不,你不能。分配后,您无法更改大小。

你要做的是分配一个新空间(大到足以容纳两者),并将它们复制到其中。

char* str1 = "Hello";
char* str2 = "World";
char* con = (char*) calloc(strlen(str1) + strlen(str2) + 1, sizeof(char));
strcpy(con, str1);
strcpy(con + strlen(str1), str2);
fprintf("%s\n", con); // "HelloWorld"

答案 2 :(得分:-1)

*pStr = 0; //to initialize it
strcpy(pStr, append);