我有两个变量如下。如何将“varOrig”的内容复制到“varDest”(不使用循环for
或 while
)?
const char* varDest = "";
char varOrig[34] = "12345";
如果你想要将数组的地址复制给指针,可以这样做:
Original Answer翻译成"最初的回答"
varDest = varOrig;
strdup
非常有用:varDest = strdup(varOrig);
在使用完成后,您需要释放varDest
。
注:原始答案翻译成“最初的回答”。
memcpy
是用于内存到内存复制的最快速的库例程。它通常比必须扫描其复制的数据的strcpy
或必须采取预防措施来处理重叠输入的memmove
更有效率。
// Defined in header <string.h>
void* memcpy( void *dest, const void *src, size_t count );
#include<string.h>
#include<stdlib.h>
...
char varOrig[34] = "12345";
// calculate length of the original string
int length = strlen(varOrig);
// allocate heap memory, length + 1 includes null terminate character
char* varDest = (char*)malloc((length+1) * sizeof(char));
// memcpy, perform copy, length + 1 includes null terminate character
memcpy(varDest, varOrig, length+1);
varOrig
的基地址赋值给指针变量varDest
吗? - WhozCraigvarDest
分配内存,而不是将其指向""
,然后才能使用strcpy
。 - Christian GibbonsvarDest = strdup(varOrig);
在使用完毕后不要忘记释放内存,因为strdup
内部使用了malloc
。 - Nick SvarDest = &varOrig[0]
或者varDest = strdup(varOrig)
,就像@NickS所说的那样。 - wBB