【问题标题】:String is not captured from return value in function in C字符串不是从 C 函数中的返回值中捕获的
【发布时间】:2014-05-27 14:42:32
【问题描述】:

我有一个函数应该合并 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 是 ?

【问题讨论】:

    标签: c string return


    【解决方案1】:

    您的代码中有 两个undefined behavior 实例:第一个是您使用一个数组一个字符长并写入更多不止一个字符。第二个是你返回一个指向局部变量的指针。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-22
      • 2013-10-13
      相关资源
      最近更新 更多