Funcionamiento de Memcpy
MEMCPY copia los bytes de datos por byte desde la matriz de origen a la matriz de destino. Esta copia de datos es threadsafe. El proceso de copia de datos puede fallar si el tamaño dado no es preciso para la matriz de destino. En algún momento, los comportamientos de la función memcpy () se vuelven indefinidos dependiendo de la condición. A veces, los objetos se superponen, y hay un puntero nulo en cualquiera de las dos ubicaciones, ya sea fuente o destino.
Sintaxis de Memcpy
# MEMCPY (destino void, fuente de constación, recuento de tamaño);Aquí, el destino y la fuente son las ubicaciones desde donde se copian los contenidos y al que se copian. El tercer parámetro muestra el número de bytes que se deben copiar. El valor de retorno de esta función built_in es la ubicación de la matriz de destino.
Implementación de la función MEMCPY ()
Ejemplo 1
Este ejemplo contiene la copia de los datos de la fuente a la parte de destino. Primero, necesitamos usar dos bibliotecas y un archivo de encabezado en nuestro código fuente. Una es la biblioteca IOSTream que permite CIN y Cout en programas C ++ y utiliza efectivamente la participación del usuario. Pero, en este programa, solo necesitamos mostrar los valores resultantes; Por eso debemos mencionarlo. La segunda biblioteca utilizada es la biblioteca que permite la copia de datos de la fuente al destino. Esta copia y asignación de memoria se realiza a través de una biblioteca llamada CString. Entonces, para hacer el programa en un estado de trabajo, primero incluiremos estas dos bibliotecas en el archivo de encabezado.
#incluirTodas las funcionalidades de cadena o matriz de caracteres se realizan utilizando una biblioteca CString. En el programa principal, se inicializan dos matrices de caracteres. Uno es una matriz de origen, y la otra es la matriz de destino. Ambas matrices están llenas de datos que necesitamos copiar. En este código, copiaremos todos los datos de una matriz a otra. Todos los bytes se duplicarán en la matriz de destino a medida que los datos se copian byte por byte. Aquí, ambas matrices tienen datos.
Podría haber una posibilidad, cuando copiamos bytes de una matriz a otra y cuando la matriz de destino está vacía. Este tipo de ejemplos se discutirán más adelante en el artículo.
Por ahora, utilizaremos la función MEMCPY para tomar las matrices de origen y destino como parámetro y el tamaño de la fuente para copiar fácilmente.
Memcpy (destino, fuente, sizeof (fuente));El tercer parámetro determinará el tamaño de la matriz de caracteres de origen. A continuación, use la instrucción Cout para mostrar el contenido en la matriz de destino.
Siempre usamos un compilador para compilar. Luego, ejecute el código para que usemos G++. El "-o" guardará la salida del código presente dentro del archivo de entrada.
$ g ++ -o mem.CLa matriz de origen contiene "Sugerencia de Linux" desde el valor resultante, y el destino tiene "artículo". Ahora, la matriz de destino contiene los datos de la matriz de origen.
Ejemplo 2
Este ejemplo funcionará en el mismo fenómeno, pero copiaremos los datos de la fuente al destino hasta un límite específico. Por ejemplo, la matriz de caracteres de origen contiene los mismos datos que "Linux Sugerencia", y la matriz de destino tiene "MEMCPY". Por lo tanto, necesitamos copiar los datos del destino a la fuente de 4 bytes. Para este propósito, mencionaremos el número de bytes como parámetro. Mientras copia el número específico de bytes, los datos en la matriz de destino se reemplazarán por el del archivo de origen.
MEMCPY (destino, fuente, 4);Aquí no necesitamos calcular el tamaño de la matriz de origen. Solo se menciona un número donde queremos copiar datos.
Verá que los 4 bytes de la fuente se copian al destino. Por ejemplo, "Linux" de "Linux Sugerencia" se extrae y copia a la matriz de destino. Mientras que, en la matriz de destino, se eliminan los primeros 4 bytes y se reemplazan a través de los bytes de la matriz de origen. El resto de los bytes en la matriz de destino seguirán siendo el mismo.
Ejemplo 3
En este ejemplo, tendremos valores enteros en la matriz de origen. Esta vez, se define una variedad de tamaño específico para almacenar datos hasta cierto punto. Como hemos mencionado anteriormente, los datos de la fuente se copiarán ahora en la matriz vacía. A continuación, declararemos una matriz de destino de un tamaño específico. En el siguiente ejemplo, hemos mencionado el tamaño de la matriz como 7, lo que significa que copiaremos 7 enteros en la matriz de destino:
INT Destino [7];Ahora, utilizaremos la función MEMCPY para copiar los valores enteros de 7 números para evitar duplicar los datos completos del archivo de origen. Aquí, usaremos destino, matriz de origen y el tamaño total de la matriz entera multiplicada por 7 para calcular el tamaño real:
# Memcpy (destino, fuente, sizeof (int) * 7);A continuación, mostraremos datos utilizando un bucle "para", a diferencia de los ejemplos anteriores. Como cada número se separa a través del índice de una matriz, cada índice contiene un valor separado. A For Loop continuará iterando hasta la séptima posición. Ahora, guarde el código para la compilación.
Como resultado, se copian 7 enteros. Esto contiene un total de 10 bytes:
Ejemplo 5
En el último ejemplo, hemos copiado los valores enteros en la matriz vacía. Aquí, copiaremos los caracteres de la matriz de fuente de caracteres a la matriz de caracteres de destino vacío.
Primero, inicialice la matriz de origen con la cadena. Al introducir la matriz de caracteres de destino, solo declare el tamaño de la matriz y manténgala vacía. Aplicar la misma función MEMCPY para copiar el contenido de la matriz de origen al archivo de destino. Hemos aplicado un límite para copiar los datos, como lo hicimos antes. Por lo tanto, queremos transferir datos de 9 bytes, ya que hemos tomado el tamaño de la matriz de destino como 10.
Memcpy (destino, fuente, sizeof (char)*9);Como el tamaño se aplica a la matriz, usaremos un bucle para mostrar el contenido de la matriz de destino de los caracteres. Esto mostrará los valores presentes en cada índice de la matriz de destino. Los datos de la fuente hasta el 9º byte, incluido el espacio, se muestran a continuación:
Conclusión
El artículo "C ++ MemCPy" es una fuente de conocimiento sobre la función incorporada en el lenguaje de programación C ++ que se ocupa de copiar datos de una matriz a otra matriz. Hay muchas posibilidades para copiar datos de una matriz dos. Estos se explican con la ayuda de ejemplos para eliminar cualquier ambigüedad con respecto al uso de la función memcpy (). Esperamos que hayas encontrado este artículo útil. Consulte los otros artículos de Sugerencia de Linux para obtener más consejos y tutoriales.