c - 如何返回一个字符串地址,然后将其分配给一个新的字符串?

标签 c pointers string

我有 1 个函数,我想将分配的字符串的地址返回给主函数并分配一个具有相同地址的新字符串指针,以便新字符串将具有旧字符串的内容。

例如:

 unknown_datatype function()
 {
      char *old = "THE STRING";
      return old;
 }

 int main()
 {
      char *snew = "";
      snew = function();
      return 0;
 }

*unknown_datatype 表示我不知道要放在那里...

*如何在不更改 main() 方法中的任何内容的情况下处理此问题

最佳答案

通常,您将传递字符数组中第一个元素的地址以及长度,并让函数填充它。

int fillMyString(char *str, int buffer_size)
{
  if(buffer_size > strlen("test"))
  {
    strncpy(str, "test", buffer_size-1);
    str[buffer_size-1] = '\0';
    return strlen(str);
  }

  return 0;
}


//In some function or main
char buffer[1024];
fillMyString(buffer, 1024);
ASSERT(!strcmp(buffer, "test"));

编辑:您提到出于某种原因您需要返回一个 char*。在这种情况下,我建议使用 malloc 在函数内部分配字符串,但要确保无论何时调用该函数,最终都会释放 返回值。

关于c - 如何返回一个字符串地址,然后将其分配给一个新的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2619229/

相关文章:

c - _malloc 在汇编中到底做了什么?

CMake C 编译器识别失败

c++ - 是什么让指针的这种用法不可预测?

c++ - 如何将 C++ 编译器错误 "cannot convert ' Type' 修复为 'const Type*' "?

c++ - const Class * const Function() 第二个const是做什么的?

c - mpz_t 到 unsigned long long 转换(gmp lib)

c - 我如何使用 For 循环初始化值开始取决于条件 for(k = (Char[i] == ' ' ? i - 1 : i ); j<k ; j++, k--)

c - 字符串字谜C程序

c# - Visual C# - 字符串追加到字符串无法正常工作

Java- JTextPane 中的 "Circular"选择?