Programação C

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

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

Arquivo de cabeçalho:

fragmento.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 apontado por src (2º argumento) será copiado. O ponteiro é declarado como nulo, então qualquer tipo de bloco de memória pode 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 nulo, então qualquer tipo de bloco de memória pode 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 forma que dois blocos de memória não se sobreponham. O tamanho dos blocos de memória de origem e destino deve ser de pelo menos Tamanho (3º argumento) bytes para evitar situações de sobreposição. Se os dois blocos de memória estiverem sobrepostos, o comportamento do memcpy () função é indefinida. Quando houver possibilidade de sobreposição, você pode usar o memmove () função de 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 origem ou destino for acessado além do comprimento do buffer, o comportamento do memcpy () função é indefinida.

O memcpy () 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, não precisa armazenar em nenhuma variável.

Exemplos:

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

char src [] = "Olá";
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 segundo memcpy () =>% s \ n", dest);
return 0;

No Exemplo 1.c declaramos uma 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). Podemos representar isso pictoricamente da seguinte forma:

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

estudante typedef struct

nome do personagem;
int id;
idade interna;
std;
std student1; // Declare student1 do tipo std
std student2; // Declare student2 do tipo std
// Atribuindo o valor de sudent1
aluno1.nome = "Bamdev Ghosh";
aluno1.id = 1105;
aluno1.idade = 30;
printf ("Aluno1: \ n \ tNome:% s \ n \ tid:% d \ n \ tage:% d \ n", aluno1.nome,
aluno1.id, aluno1.era);
// Copiar student1 para student2
memcpy (& student2, & student1, sizeof (student1));
printf ("\ n \ nApós memcpy:");
printf ("\ n \ nAluno2: \ n \ tNome:% s \ n \ tid:% d \ n \ tage:% d \ n",
aluno 2.nome, aluno 2.id, aluno2.era);
return 0;

No Exemplo 2.c nós declaramos duas estruturas aluno1 e aluno 2 (Linha 15 e 16). Primeiro, inicializamos student1 (Linha 19, 20, 21). Depois disso, usamos memcpy para copiar dados de aluno1 para aluno 2.

Conclusão:

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

Vulkan para usuários de Linux
A cada nova geração de placas gráficas, vemos os desenvolvedores de jogos ultrapassarem os limites da fidelidade gráfica e se aproximarem mais do foto...
OpenTTD vs Simutrans
Criar sua própria simulação de transporte pode ser divertido, relaxante e extremamente atraente. É por isso que você precisa ter certeza de experiment...
Tutorial OpenTTD
OpenTTD é um dos jogos de simulação de negócios mais populares que existem. Neste jogo, você precisa criar um maravilhoso negócio de transporte. No en...

Últimos artigos sobre sistemas operacionais. Muitos guias interessantes e dicas úteis. Sinta-se como se fosse seu no mundo da tecnologia moderna