如何将char数组复制到C中的char指针?

时间:2019-06-13 17:14:07

标签: c arrays pointers

我有两个变量,如下所述。如何将“ varOrig”的内容复制到“ varDest”(无循环forwhile)?

const char* varDest = "";
char varOrig[34]     = "12345";

2 个答案:

答案 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);