Trabalhando de memcpy
Memcpy copia os dados bytes por byte da matriz de origem para a matriz de destino. Esta cópia de dados é threadSafe. O processo de copiar dados pode falhar se o tamanho fornecido não for preciso para a matriz de destino. Em algum momento, os comportamentos da função memcpy () tornam -se indefinidos, dependendo da condição. Às vezes, os objetos se sobrepõem, e há um ponteiro nulo em qualquer um dos dois locais, fonte ou destino.
Sintaxe de memcpy
# memcpy (destino vazio, fonte const void, contagem de tamanho);Aqui, destino e fonte são os locais de onde o conteúdo é copiado e para qual lugar eles são copiados. O terceiro parâmetro mostra o número de bytes que devem ser copiados. O valor de retorno desta função construída_in é a localização da matriz de destino.
Implementação da função memcpy ()
Exemplo 1
Este exemplo contém a cópia dos dados da fonte para a parte de destino. Primeiro, precisamos usar duas bibliotecas e um arquivo de cabeçalho em nosso código -fonte. Uma é a biblioteca iostream que permite CIN e Cout em programas C ++ e usa efetivamente o envolvimento do usuário. Mas, neste programa, precisamos exibir apenas os valores resultantes; É por isso que precisamos mencionar isso. A segunda biblioteca usada é a biblioteca que permite a cópia dos dados da fonte para o destino. Esta cópia e alocação de memória são feitas através de uma biblioteca chamada CString. Então, para fazer o programa em um estado de trabalho, primeiro incluiremos essas duas bibliotecas no arquivo de cabeçalho.
#incluirTodas as funcionalidades da matriz de string ou caracteres são feitas usando uma biblioteca CString. No programa principal, duas matrizes de caracteres são inicializadas. Um é uma matriz de origem e o outro é a matriz de destino. Ambas as matrizes estão cheias de dados que precisamos copiar. Neste código, copiaremos todos os dados de uma matriz para outro. Todos os bytes serão duplicados na matriz de destino, pois os dados são copiados byte por byte. Aqui, ambas as matrizes têm dados.
Pode haver uma possibilidade, quando copiamos bytes de uma matriz para outra e quando a matriz de destino estiver vazia. Esses tipos de exemplos serão discutidos mais adiante no artigo.
Por enquanto, usaremos a função memcpy para levar as matrizes de origem e destino como um parâmetro e o tamanho de fonte para copiar facilmente.
Memcpy (destino, fonte, sizeof (fonte));O terceiro parâmetro determinará o tamanho da matriz de caracteres de origem. Em seguida, use a instrução Cout para exibir o conteúdo na matriz de destino.
Sempre usamos um compilador para compilar. Em seguida, execute o código, então usamos g++. O "-o" salvará a saída do código presente dentro do arquivo de entrada.
$ g ++ -o Mem Mem.cA matriz de origem contém "dica de linux" do valor resultante, e o destino possui "artigo". Agora, a matriz de destino contém os dados da matriz de origem.
Exemplo 2
Este exemplo funcionará no mesmo fenômeno, mas copiaremos os dados da fonte para o destino até um limite específico. Por exemplo, a matriz de caracteres de origem contém os mesmos dados de "Linux Dint", e a matriz de destino possui "memcpy". Então, precisamos copiar os dados do destino para a fonte de 4 bytes. Para esse fim, mencionaremos o número de bytes como o parâmetro. Ao copiar o número específico de bytes, os dados na matriz de destino serão substituídos pelo do arquivo de origem.
Memcpy (destino, fonte, 4);Aqui, não precisamos calcular o tamanho da matriz de origem. Apenas um número deve ser mencionado onde queremos copiar dados.
Você verá que os 4 bytes da fonte são copiados para o destino. Por exemplo, "Linux" de "Linux Dint" é extraído e copiado para a matriz de destino. Considerando que, na matriz de destino, os 4 primeiros bytes são removidos e são substituídos pelos bytes da matriz de origem. O restante dos bytes na matriz de destino permanecerá o mesmo.
Exemplo 3
Neste exemplo, teremos valores inteiros na matriz de origem. Desta vez, uma matriz de origem de tamanho específica é definida para armazenar dados até certo ponto. Como mencionamos anteriormente, os dados da fonte serão copiados agora para a matriz vazia. Em seguida, declararemos uma matriz de destino de um tamanho específico. No exemplo a seguir, mencionamos o tamanho da matriz como 7, o que significa que copiaremos 7 números inteiros na matriz de destino:
Int Destination [7];Agora, usaremos a função memcpy para copiar os valores inteiros de 7 números para evitar duplicar os dados inteiros do arquivo de origem. Aqui, usaremos o destino, a matriz de origem e o tamanho total da matriz inteira multiplicada por 7 para calcular o tamanho real:
# Memcpy (destino, fonte, sizeof (int) * 7);Em seguida, exibiremos dados usando um loop "para", diferentemente dos exemplos anteriores. Como cada número é separado através do índice de uma matriz, cada índice contém um valor separado. A for loop continuará iterando até a 7ª posição. Agora, salve o código para a compilação.
Como resultado, 7 números inteiros são copiados. Isso contém um total de 10 bytes:
Exemplo 5
No último exemplo, copiamos os valores inteiros na matriz vazia. Aqui, copiaremos os caracteres da matriz de origem do personagem para a matriz de caracteres de destino vazia.
Primeiro, inicialize a matriz de origem com a string. Ao apresentar a matriz de caracteres de destino, declare apenas o tamanho da matriz e mantenha -a vazia. Aplique a mesma função memcpy para copiar o conteúdo da matriz de origem no arquivo de destino. Aplicamos um limite para copiar os dados, como fizemos antes. Então, queremos transferir dados de 9 bytes, pois pegamos o tamanho da matriz de destino como 10.
Memcpy (destino, fonte, sizeof (char)*9);À medida que o tamanho é aplicado à matriz, usaremos um loop para exibir o conteúdo da matriz de destino dos caracteres. Isso exibirá os valores presentes em cada índice da matriz de destino. Os dados da fonte até o 9º byte, incluindo o espaço, são mostrados abaixo:
Conclusão
O artigo "C ++ Memcpy" é uma fonte de conhecimento sobre a função interna na linguagem de programação C ++ que lida com a cópia de dados de uma matriz para outra. Existem muitas possibilidades em copiar dados de uma matriz dois outros. Estes são explicados com a ajuda de exemplos para remover qualquer ambiguidade em relação ao uso da função memcpy (). Esperamos que você tenha achado este artigo útil. Verifique os outros artigos de dica do Linux para obter mais dicas e tutoriais.