字符串不是从C函数中的返回值捕获的

use*_*623 1 c string return

我有一个函数,它应该合并2个字符串并返回结果更长的字符串.该字符串似乎已成功合并到函数中,但返回时信息将丢失.函数中的'output'包含合并的字符串,应返回此值.

mergedString不在main中打印,而是在函数中打印.为什么?如何使它工作?

main () {
char  *mergedString = mergeStrings( frags[maxOverlapArrPos1], frags[maxOverlapArrPos2], maxCharOverlap);
   printf ("mergedStringInMain is %s\n", mergedString);
}

char * mergeStrings(char * string1, char * string2, int overlapCharSize){
  int overlapStartPosition = strlen(string1) - overlapCharSize;
  char output[] = "";

  if (strlen(string2)>overlapCharSize){
     strncat(output, string1, overlapStartPosition);
     strncat(output , string2, strlen(string2));
  } 
  printf ("mergedStringInFunction is %s\n", output);
  return output;

}
Run Code Online (Sandbox Code Playgroud)

输出是:

mergedString是abcdefg

mergedString是?

Som*_*ude 5

您的代码中有两个未定义行为的实例:第一个是您使用一个字符长的数组并将多个字符写入其中.第二个是返回指向局部变量的指针.