我的代码有问题
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/