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

我有一个函数,它应该合并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; } 

输出是:

mergedString是abcdefg

mergedString是?

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