c++ - 试图将一个 char* 复制到另一个 char*

标签 c++ string memory char allocation

我的代码有问题

char* strdup(const char* s)
{
    int n = 0;

    for(; *s != 0; s++)
    {
        n++;
    }

    char* p = new char[n+1];

    for(int i = 0; i < n; i++)
    {
        p[i] = s[i];
    }
    p[n] = 0;

    return p;
}

int main()
{
    const char* p = "testing";

    char* p_copy = strdup(p);

    std::cout << p << '\n' << p_copy << std::endl;

    return 0;
}

没有按预期工作。

我想编写一个函数,它接受 const char* 并将其复制到新分配的 char 内存中。完成后,它应该返回一个指向 char 的指针。

现在,当我尝试它时,我的输出很简单:

testing

提前感谢您的帮助

最佳答案

在开始将其复制到 p 之前,尽量不要递增 s。我注意到在您的第一个 for 循环中,您递增 s 直到它指向 null,然后使用该指针值开始您的字符串复制。难怪您得到一个空字符串。

关于c++ - 试图将一个 char* 复制到另一个 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49843325/

相关文章:

c++ - 只有一个值被添加到 vector 中

c++ - 我的同事喜欢使用memset初始化struct,我怎样才能说服他不要这样做?

c++ - 我应该返回一个迭代器还是一个指向 STL 容器中元素的指针?

java - 字符串替换Java

java - 从字符串 Java 中删除短单词和字符

python - Python 中 Bytearray 和 List 的区别

c++ - 嵌套类作为C++中成员函数的参数

string - 如何在 node.js 中执行多行字符串?

java 堆大小按部分增长达到某个限制

c - 变量如何根据它们的类型存储在 C 的内存中