连接两个 *chars w/o 字符串函数?

concat two *chars w/o string functions?

我想知道如何在不使用字符串复制和字符串连接的情况下将两个 *chars 连接在一起。

到目前为止我有这个:

char *concat(char *pt1, char *pt2)
{
    char* c;
    c = malloc(strlen(a) + strlen(b));
    return c;
}

如果我使用的是字符串函数,我可以这样做:

  strcpy(str3, str1);
  strcat(str3, str2);

有什么提示吗?

Weather Vane所述,终止符加1'[=12=]'。在你的函数中使用它:-

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]='[=10=]';
  return str3;
}

你循环复制字符。如果您想针对此特定操作进行优化,那么在将第一个字符串复制到目标字符串后,您可以保留目标字符串的结束指针,并使用它开始复制下一个字符串,而不是循环再次查找结尾或将长度添加到目的地的起始指针。