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