我正在编写一个程序,我需要连接两个数组。
例如,如果我有:
int max =100;
char *append = "Hello";
char *pStr = malloc(max);
如何将append
连接到pStr
?
答案 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);