实现strcpy函数的最佳方法

时间:2013-12-08 16:09:50

标签: strcpy

如果我像这样调用strcpy函数:

char *s = NULL;
strcpy(&s, "Test");

在main函数中,这是它的最佳实现: 或者有更好的方法来实现这个功能? 谢谢!

1 个答案:

答案 0 :(得分:2)

首先:如果你选择sizeof(src),你将为指针分配内存,而不是字符串。在32位环境中,这将为您留下4个字节的内存,而不是您需要的10个内存。

因此,您需要提供所需的内存量,或者从第二个参数中提取内存:这样的事情:

void str_cpy(char** dest, const char* src){
    if (*dest == NULL) *dest = malloc(strlen(src)+1);
    else *dest = realloc(*dest, strlen(src)+1);
    memcpy(*dest, src, strlen(src) + 1);
}