Cómo usar la función MEMCPY en el lenguaje C?

Cómo usar la función MEMCPY en el lenguaje C?
En el lenguaje C, la función de Memcpy () se usa para copiar un bloque de memoria de una ubicación a otra. En este artículo, vamos a discutir en detalle cómo se usa la función memcpy (). Entonces empecemos.

Archivo de cabecera:

cadena.H

Sintaxis:

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

Argumentos:

La función toma 3 argumentos:

  1. Dest:
  2. Este es un puntero inicial de un bloque de memoria donde el bloque de memoria apunta por SRC (2º argumento) se copiará. El puntero se declara como nulo, por lo que se puede copiar cualquier tipo de bloque de memoria.

  3. SRC:
  4. Este es un puntero inicial del bloque de memoria de origen desde donde se copiará el bloque de memoria. El puntero se declara como nulo, por lo que se puede copiar cualquier tipo de bloque de memoria.

  5. tamaño :
  6. Este es el tamaño del bloque de memoria en bytes.

El valor de los dos puntero desestimado y SRC Debería ser de tal manera que dos bloques de memoria no se superpongan. El tamaño de los bloques de memoria de fuente y destino debe ser al menos de tamaño (3er argumento) bytes para evitar situaciones superpuestas. Si los dos bloques de memoria se superponen, entonces el comportamiento del memcpy () la función está indefinida. Cuando existe la posibilidad de superponerse, puede usar el Memmove () función de la biblioteca donde la superposición está bien definida. Memmove () la función es más lenta en comparación con memcpy () función.

Debido al valor de tamaño, Si se accede a la fuente o el destino más allá de su longitud del búfer, entonces el comportamiento del memcpy () la función está indefinida.

El memcpy () la función no verifica el personaje '\ 0'.

Valores de retorno:

Esta función devuelve el valor de la dirección de destino desestimado. Como el valor de desestimado ya está disponible, por lo que no necesita almacenar en ninguna variable.

Ejemplos:

//Ejemplo 1.C
#incluir
#incluir
int main ()

char src [] = "hola";
char dest [13];
MEMCPY (Dest, SRC, 6);
printf ("Dest después de First MemCpy () => %S \ n", Dest);
MEMCPY (Dest+Sizeof (SRC) -1, "Mundo!", 8);
printf ("des después del segundo memcpy () => %s \ n", des);
regresar 0;

En el ejemplo1.c hemos declarado una matriz de dos caracteres SRC y desestimado. El tamaño del SRC es 6 y el desestimado es 13. Primero, copiamos 6 caracteres 'h', 'e', ​​'l', 'l', 'o', '\ 0' de SRC a desestimado (Línea 11). En la segunda función memcpy () copió 8 caracteres ", 'w', 'o', 'r', 'l', 'd', '!',' \ 0 'al Dest después de 5 caracteres (línea 15). Potencialmente podemos representar esto de la siguiente manera:

// Ejemplo2.C
#incluir
#incluir
int main ()

estudiante typedef struct

nombre del personaje;
int id;
int Age;
std;
Std Student1; // Declarar Student1 de Tipo STD
Std Student2; // Declarar Student2 de Tipo STD
// Asignación del valor de Sudent1
estudiante1.nombre = "Bamdev Ghosh";
estudiante1.id = 1105;
estudiante1.edad = 30;
printf ("Student1: \ n \ tname: %s \ n \ tid: %d \ n \ tage: %d \ n", Student1.nombre,
estudiante1.ID, estudiante1.edad);
// Copiar estudiante1 al estudiante2
MEMCPY (& Student2, & Student1, Sizeof (Student1));
printf ("\ n \ nafter memcpy:");
printf ("\ n \ nstudent2: \ n \ tname: %s \ n \ tid: %d \ n \ tage: %d \ n",
estudiante2.Nombre, Estudiante2.ID, estudiante2.edad);
regresar 0;

En el ejemplo2.c hemos declarado dos estructuras estudiante1 y estudiante2 (Línea 15 y 16). Primero, inicializamos Student1 (línea 19, 20, 21). Después de eso, usamos memcpy para copiar datos de estudiante1 a estudiante2.

Conclusión:

En este artículo, hemos aprendido a usar el memcpy función. Hemos visto que esta función se puede usar para cualquier tipo de bloque de memoria, pero esta función tiene algunas limitaciones. Entonces, debes usar esta función con cuidado.