0

我有以下程序无法合并两个字符串,因为 string1 没有足够的空间来保存合并的字符串。当 string1 没有足够的空间并且不使用附加数组来保存合并的字符串时,如何返回合并的字符串?

 #include<stdio.h>
 #include<string.h>
 int main()
  { 
      void strcat2(char *str1,char *str2);
      strcat2("john","kris");
      getchar();
  }
  void strcat2(char *str1,char *str2)
   {
     for (; *str1++;);
     for (;*str1++ =*str2++;);

  }
4

2 回答 2

3

你可以试试这个,因为这是一个更好的,或者只是分配更多的空间。:-

#include <stdlib.h>
#include <string.h>

char* concat(const char *s1, const char *s2)
{
    char *result = malloc(strlen(s1)+strlen(s2)+1);

    strcpy(result, s1);
    strcat(result, s2);
    return result;
}
于 2013-08-22T18:07:26.713 回答
2

在 C 中,您必须自己进行内存分配。这意味着通常函数不可能以垃圾收集语言的方式返回字符串。当您需要从函数返回字符串时,您必须传入结果字符串,由调用者预先分配,或者动态分配并依赖调用者释放它。

C语言没有捷径,你只需要完成工作。

于 2013-08-22T18:47:27.657 回答