我有两个变量,如下所述。如何将“ varOrig”的内容复制到“ varDest”(无循环for
或while
)?
const char* varDest = "";
char varOrig[34] = "12345";
答案 0 :(得分:0)
如果要将数组的地址复制到指针,请执行以下操作:
varDest = varOrig;
否则,您将需要分配内存并复制字符串。
strdup
为此有用:
varDest = strdup(varOrig);
使用此功能后,您需要释放varDest
。
答案 1 :(得分:0)
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);