c - strcpy 与 strdup

标签 c strcpy strdup

我读到 strcpy 用于复制字符串,而 strdup 返回指向新字符串的指针以复制字符串。

您能否解释一下您更喜欢在哪些情况下使用strcpy,以及您更喜欢在哪些情况下使用strdup

最佳答案

strcpy(ptr2, ptr1) 等价于while(*ptr2++ = *ptr1++)

strdup 相当于

ptr2 = malloc(strlen(ptr1)+1);
strcpy(ptr2,ptr1);

(memcpy version 可能更有效率)

因此,如果您希望将复制的字符串用于另一个函数(因为它是在堆部分创建的),您可以使用 strdup,否则 strcpy 就足够了。

关于c - strcpy 与 strdup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14020380/

相关文章:

c - 如何在 C 中以特定速率运行循环(在仿真中)

c++ - 为什么 C 选择某些运算符作为它们的符号?

c++ - strcpy 及其第二个参数出错

c - 如何移动已分配给另一个结构的内存

c - 当字符串文字以换行符结尾时,strdup 大小为 4 的无效读取\n

c - Mongo C驱动: Insert element into nested array

c - 指针为本地时出现段错误

C |指针、数组和分段问题

c++ - strcpy之后的delete[]会不会导致内存泄露?