Como usar a função memcpy na linguagem C?

Como usar a função memcpy na linguagem C?
Na função C Language Memcpy () é usada para copiar um bloco de memória de um local para outro. Neste artigo, discutiremos em detalhes como a função memcpy () é usada. Então vamos começar.

Arquivo de cabeçalho:

corda.h

Sintaxe:

void *mempcpy (void *dest, const void *src, size_t size)

Argumentos:

A função leva 3 argumentos:

  1. dest:
  2. Este é um ponteiro inicial de um bloco de memória onde o bloco de memória apontou por src (2º argumento) será copiado. O ponteiro é declarado como vazio, para que qualquer tipo de bloco de memória possa ser copiado.

  3. SRC:
  4. Este é um ponteiro inicial do bloco de memória de origem de onde o bloco de memória será copiado. O ponteiro é declarado como vazio, para que qualquer tipo de bloco de memória possa ser copiado.

  5. tamanho :
  6. Este é o tamanho do bloco de memória em bytes.

O valor dos dois ponteiros dest e src deve ser de tal maneira que dois blocos de memória não se sobreponham. O tamanho dos blocos de memória de fonte e destino deve ser pelo menos de tamanho (3º argumento) bytes para evitar situações sobrepostas. Se os dois blocos de memória se sobrepõem, o comportamento do memcpy () A função é indefinida. Quando existe a possibilidade de sobreposição, você pode usar o Memmove () Função da biblioteca onde a sobreposição é bem definida. Memmove () A função é mais lenta em comparação com memcpy () função.

Devido ao valor de tamanho, Se a fonte ou destino for acessada além do comprimento do buffer, o comportamento do memcpy () A função é indefinida.

O memcpy () A função não verifica para encerrar o caractere '\ 0'.

Valores de retorno:

Esta função retorna o valor do endereço de destino dest. Como o valor de dest já está disponível, então, ele não precisa armazenar em nenhuma variável.

Exemplos:

//Exemplo 1.c
#incluir
#incluir
int main ()

char src [] = "hello";
Char Dest [13];
Memcpy (Dest, SRC, 6);
printf ("Dest após o primeiro memcpy () => %s \ n", dest);
memcpy (dest+sizeof (src) -1, "mundo!", 8);
printf ("Dest após Second Memcpy () => %s \ n", dest);
retornar 0;

No exemplo1.C declaramos matriz de dois caracteres src e dest. O tamanho do src é 6 e o dest é 13. Primeiro, copiamos 6 caracteres 'h', 'e', ​​'l', 'l', 'o', '\ 0' de src para dest (Linha 11). Na segunda função memcpy () copiou 8 caracteres ", 'w', 'o', 'r', 'l', 'd', '!',' \ 0 'para o destino após 5 caracteres (linha 15). Pictorially, podemos representar isso da seguinte maneira:

// Exemplo2.c
#incluir
#incluir
int main ()

Typedef Struct Student

nome do personagem;
int id;
Int Age;
std;
Std Student1; // declarar aluno1 do tipo std
Std Student2; // declarar aluno2 do tipo std
// atribuindo o valor de sudent1
Student1.name = "bamdev ghosh";
Student1.id = 1105;
Student1.idade = 30;
printf ("Student1: \ n \ tname: %s \ n \ tid: %d \ n \ tage: %d \ n", estudante1.nome,
Student1.ID, Student1.idade);
// copie o aluno1 para o aluno2
memcpy (& student2, & student1, sizeof (student1));
printf ("\ n \ nafter memcpy:");
printf ("\ n \ nstudent2: \ n \ tname: %s \ n \ tid: %d \ n \ tage: %d \ n",
Student2.Nome, Student2.ID, Student2.idade);
retornar 0;

No exemplo2.c declaramos duas estrutura Student1 e Student2 (Linha 15 e 16). Primeiro, inicializamos o aluno1 (linha 19, 20, 21). Depois disso, usamos memcpy Para copiar dados de Student1 para Student2.

Conclusão:

Neste artigo, aprendemos a usar o memcpy função. Vimos que essa função pode ser usada para qualquer tipo de bloco de memória, mas essa função tem algumas limitações. Então, você tem que usar esta função com cuidado.