我了解到strcpy
用于复制字符串,而strdup
返回一个指向新字符串的指针来复制该字符串。
您能解释一下在哪些情况下更喜欢使用strcpy
吗?在哪些情况下您更喜欢使用strdup
吗
发布于 2016-06-26 06:01:12
在accepted answer中,strdup
的实现如下所示:
ptr2 = malloc(strlen(ptr1)+1);
strcpy(ptr2,ptr1);
但是,这在一定程度上不是最优的,因为strlen
和strcpy
都需要通过检查每个字符是否为\0
来查找字符串的长度。
使用memcpy
应该更有效率:
char *strdup(const char *src) {
size_t len = strlen(src) + 1;
char *s = malloc(len);
if (s == NULL)
return NULL;
return (char *)memcpy(s, src, len);
}
https://stackoverflow.com/questions/14020380
复制相似问题