如果我像这样调用strcpy函数:
char *s = NULL;
strcpy(&s, "Test");
在main函数中,这是它的最佳实现: 或者有更好的方法来实现这个功能? 谢谢!
答案 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);
}