我试图找出如何在不使用字符串副本和字符串连接的情况下将两个*字符连接在一起。
到目前为止,我有这个:
char *concat(char *pt1, char *pt2)
{
char* c;
c = malloc(strlen(a) + strlen(b));
return c;
}
如果我正在使用字符串函数,我可以这样做:
strcpy(str3, str1);
strcat(str3, str2);
任何提示?
答案 0 :(得分:1)
如Weather Vane
所述,为终结者'\0'
添加1。在您的函数中使用它: -
char *concat(char *str1, char *str2)
{
char* str3;
int i=0;
str3 = malloc(strlen(str1) + strlen(str2) + 1);
if (str3 == NULL)
return NULL;
while(*str1){
str3[i++]=*str1++;
}
while(*str2){
str3[i++]=*str2++;
}
str3[i]='\0';
return str3;
}
答案 1 :(得分:1)
循环并复制字符。如果要针对此特定操作进行优化,则在将第一个字符串复制到目标字符串之后保持目标字符串的结束指针并使用该字符串开始复制下一个字符串而不是循环以再次查找结尾或将长度添加到目的地的起始指针。