Programación en C

Cómo usar la función memcpy en lenguaje C?

Cómo usar la función memcpy en lenguaje C?
En el lenguaje C, la función 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:

cuerda.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 de inicio de un bloque de memoria donde el bloque de memoria apuntado por src (Segundo argumento) se copiará. El puntero se declara nulo, por lo que se puede copiar cualquier tipo de bloque de memoria.

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

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

El valor de los dos punteros dest y src debe ser de tal manera que dos bloques de memoria no se superpongan. El tamaño de los bloques de memoria de origen y destino debe ser al menos de Talla (3er argumento) bytes para evitar situaciones superpuestas. Si los dos bloques de memoria se superponen, entonces el comportamiento del memcpy () la función no está definida. Cuando existe la posibilidad de superposición, puede utilizar el memmove () función de 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 Talla, Si se accede al origen o al destino más allá de su longitud de búfer, entonces el comportamiento del memcpy () la función no está definida.

La memcpy () la función no marca para terminar el carácter '\ 0'.

Valores devueltos:

Esta función devuelve el valor de la dirección de destino dest. Como el valor de dest ya está disponible, por lo que no es necesario 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 la primera memcpy () =>% s \ n", dest);
memcpy (dest + sizeof (src) -1, "mundo!", 8);
printf ("dest después de la segunda memcpy () =>% s \ n", dest);
return 0;

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

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

estudiante de estructura typedef

nombre del personaje;
int id;
int age;
std;
std student1; // Declara student1 de tipo std
std student2; // Declara student2 de tipo std
// Asignar el valor de sudent1
estudiante1.nombre = "Bamdev Ghosh";
estudiante1.id = 1105;
estudiante1.edad = 30;
printf ("Estudiante1: \ n \ tNombre:% s \ n \ tid:% d \ n \ tage:% d \ n", estudiante1.nombre,
estudiante1.id, estudiante1.edad);
// Copiar student1 a student2
memcpy (& alumno2, & alumno1, tamaño de (alumno1));
printf ("\ n \ nDespués de memcpy:");
printf ("\ n \ nEstudiante2: \ n \ tNombre:% s \ n \ tid:% d \ n \ tage:% d \ n",
estudiante2.nombre, estudiante2.id, estudiante2.edad);
return 0;

En Example2.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 utilizar la memcpy función. Hemos visto que esta función se puede utilizar para cualquier tipo de bloque de memoria pero esta función tiene algunas limitaciones. Entonces, debes usar esta función con cuidado.

Las mejores distribuciones de Linux para juegos en 2021
El sistema operativo Linux ha recorrido un largo camino desde su apariencia original, simple y basada en servidor. Este sistema operativo ha mejorado ...
Cómo capturar y transmitir su sesión de juego en Linux
En el pasado, los juegos solo se consideraban un pasatiempo, pero con el tiempo la industria del juego experimentó un gran crecimiento en términos de ...
Los mejores juegos para jugar con el seguimiento de manos
Oculus Quest presentó recientemente la gran idea del seguimiento manual sin controladores. Con un número cada vez mayor de juegos y actividades que ej...

Últimos artículos sobre sistemas operativos. Muchas guías interesantes y consejos útiles. Siéntete como tuyo en el mundo de la tecnología moderna