Как скопировать массив символов в символьный указатель в C? - PullRequest
0 голосов
/ 13 июня 2019

У меня есть две переменные, как указано ниже. Как скопировать содержимое «varOrig» в «varDest» (без циклов for ou while)?

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

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

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);
0 голосов
/ 13 июня 2019

Если вы хотите скопировать адрес массива в указатель, сделайте следующее:

varDest = varOrig;

В противном случае вам нужно будет выделить память и скопировать строку.

strdup полезно для этого:

varDest = strdup(varOrig);

Вам нужно освободить varDest после использования этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...