未能 return 来自函数的字符串

Failing to return a string from a function

我无法让它工作。我构建了一个字符串,但无法 return 它,我尝试使用指针进行调整,但它也没有用。代码详情:

char* replace(const char* sSource, unsigned int nSearch, unsigned int nReplace)
{
   char str[strlen(sSource)+1];

   \filling str and putting '[=11=]' at the end......

   return str;  // At this point str = "abgde3"  TRYING TO PRINT STR INSIDE THE FUNCTION WORKS !
}

int main()
{
    printf("%s", replace("A39a933Ab",93,314));
    return 0;
}

你必须 return 指针,而不是数组。喜欢这里:

char* replace(const char* sSource, unsigned int nSearch, unsigned int nReplace)
{
   char str[strlen(sSource)+1];

   return &str; //Added & to get pointer to variable
}

另外,你不应该 return 指向局部变量的指针,所以为一个分配内存,然后 return 它。

char* replace(const char* sSource, unsigned int nSearch, unsigned int nReplace)
{
   char * str = (char *)malloc(strlen(sSource)+1);

   return str;
}

您必须通过 free(pointerToArray)

清理分配的内存