我正在尝试将char [] array
复制到char * pointer
。
我有2种数据类型:CHAR* dst
和CHAR src[]
我的目标是在不使用任何C ++定义(例如new or delete
。
正如您所理解的,这意味着我正在寻找一种我可以使用的操作,它不会增加编译的大小。
我尝试了什么?
*src = '\0';
strcpy(dst, src);
strncpy(dst, src, sizeof(src));
基本上,我被困了,有人能给我任何想法吗?
答案 0 :(得分:1)
你需要以某种方式为目的地分配内存,你不能只是“复制到指针”,因为它没有指向任何东西。
如果你需要C分配方式 - malloc
,通常会使用类似的功能。
dst = (char*)malloc(strlen(src)+1);
您还可以指向代码中现有的预分配缓冲区
char[100] buffer;
dst = buffer + 42; // pointing to somewhere in the middle.
某些C运行时允许在堆栈上动态分配内存(如果只需要在当前函数中使用它就可以)alloca。
复制时要小心,不要超过目标可用的内存量,否则会出现不可预测的错误结果(崩溃,程序内存损坏,随机行为)。