concat两个*字符,不带字符串函数?

concat两个*字符,不带字符串函数?,c,pointers,concatenation,C,Pointers,Concatenation,我正在试图弄清楚如何在不使用字符串复制和字符串连接的情况下将两个*字符连接在一起 到目前为止,我有: char *concat(char *pt1, char *pt2) { char* c; c = malloc(strlen(a) + strlen(b)); return c; } 如果我使用字符串函数,我可以: strcpy(str3, str1); strcat(str3, str2); 有任何提示吗?如风向标所述,为终止符'\0'添加1。在您的功能中

我正在试图弄清楚如何在不使用字符串复制和字符串连接的情况下将两个*字符连接在一起

到目前为止,我有:

char *concat(char *pt1, char *pt2)
{
    char* c;
    c = malloc(strlen(a) + strlen(b));
    return c;
}
如果我使用字符串函数,我可以:

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

有任何提示吗?

风向标所述,为终止符
'\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<代码>c=malloc(strlen(pt1)+strlen(pt2)+1)检查
malloc()
中的返回值。然后从每个字符串复制,直到到达0个终止符。再次!请解释一下为什么这个问题被否决了。有人不明白某些事情,请求帮助并获得否决票?谢谢,忘记了终结者。当然这是strcpy/strcat etc会做的,但会做得更有效。我想这是作业,不是作业问题。我知道我必须使用一个循环,但由于这个终止字符,我没有尝试工作。谢谢大家!