Programare C

How to use memcpy function in C language?

How to use memcpy function in C language?
In the C language memcpy() function is used to copy a block of memory from one location to another. In this article, we are going to discuss in detail how the memcpy() function is used. So, let's get started.

Header File:

string.h

Syntax:

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

Arguments:

The function takes 3 arguments:

  1. dest :
  2. This is a starting pointer of a memory block where the memory block pointed by src (2nd argument) will be copied. The pointer is declared as void, so any type of memory block can be copied.

  3. src :
  4. This is a starting pointer of the source memory block from where the memory block will be copied. The pointer is declared as void, so any type of memory block can be copied.

  5. size :
  6. This is the size of the memory block in bytes.

The value of the two pointer dest and src should be in such a way that two memory blocks do not overlap. The size of memory blocks of source and destination must be at least of size (3rd argument) bytes to avoid overlapping situations. If the two memory blocks are overlapped then the behavior of the memcpy() function is undefined. When there is a possibility of overlapping, you can use the memmove() library function where overlapping is well defined. memmove() function is slower compared to memcpy() function.

Due to the value of size, if the source or destination is accessed beyond their buffer length then the behavior of the memcpy() function is undefined.

The memcpy() function does not check to terminate '\0' character.

Return values:

This function returns the value of destination address dest. As the value of dest is already available so, it need not to store in any variable.

Examples:

//Example1.c
#include
#include
int main()

char src[] = "Hello";
char dest[13];
memcpy(dest,src,6);
printf("dest after first memcpy() => %s\n",dest);
memcpy(dest+sizeof(src)-1," world!",8);
printf("dest after second memcpy() => %s\n",dest);
return 0;

In Example1.c we have declared two-character array src and dest. The size of the src is 6 and the dest is 13. First, we copied 6 characters 'H', 'e', 'l', 'l', 'o', '\0' from src to dest ( Line 11 ). In the second memcpy() function copied 8 characters", 'w', 'o', 'r', 'l', 'd', '!', '\0' to the dest after 5 characters ( Line 15 ). Pictorially we can represent this as follows:

//Example2.c
#include
#include
int main()

typedef struct student

char *name;
int id;
int age;
std;
std student1; // Declare student1 of type std
std student2; // Declare student2 of type std
// Assigning the value of sudent1
student1.name = "Bamdev Ghosh";
student1.id = 1105;
student1.age = 30;
printf("Student1:\n\tName : %s\n\tid : %d\n\tage : %d\n",student1.name,
student1.id,student1.age);
// Copy student1 to student2
memcpy(&student2, &student1, sizeof(student1));
printf("\n\nAfter memcpy:");
printf("\n\nStudent2:\n\tName : %s\n\tid : %d\n\tage : %d\n",
student2.name,student2.id,student2.age);
return 0;

In Example2.c we have declared two structure student1 and student2 (Line 15 and 16). First, we initialize student1 (Line 19, 20, 21). After that, we use memcpy to copy data from student1 to student2.

Conclusion:

In this article, we have learned how to use the memcpy function. We have seen that this function can be used for any type of memory block but this function has some limitations. So, you have to use this function carefully.

Jocuri HD remasterizate pentru Linux care nu au avut niciodată lansare Linux mai devreme
Mulți dezvoltatori și editori de jocuri vin cu remasterizarea HD a jocurilor vechi pentru a prelungi durata de viață a francizei, vă rog fanilor să so...
Cum se utilizează AutoKey pentru automatizarea jocurilor Linux
AutoKey este un utilitar de automatizare desktop pentru Linux și X11, programat în Python 3, GTK și Qt. Folosind funcțiile sale de scriptare și MACRO,...
Cum se arată FPS Counter în jocurile Linux
Jocurile cu Linux au primit un impuls major când Valve a anunțat suportul Linux pentru clientul Steam și jocurile acestora în 2012. De atunci, multe j...

Ultimele articole despre sistemele de operare. O mulțime de ghiduri interesante și sfaturi utile. Simțiți-vă ca al vostru în lumea tehnologiei moderne