![The C Standard Library Reference](/c_standard_library/images/c-mini-logo.jpg)
- The C Standard Library
- C Library - Home
- C Library - <assert.h>
- C Library - <complex.h>
- C Library - <ctype.h>
- C Library - <errno.h>
- C Library - <fenv.h>
- C Library - <float.h>
- C Library - <inttypes.h>
- C Library - <iso646.h>
- C Library - <limits.h>
- C Library - <locale.h>
- C Library - <math.h>
- C Library - <setjmp.h>
- C Library - <signal.h>
- C Library - <stdalign.h>
- C Library - <stdarg.h>
- C Library - <stdbool.h>
- C Library - <stddef.h>
- C Library - <stdio.h>
- C Library - <stdlib.h>
- C Library - <string.h>
- C Library - <tgmath.h>
- C Library - <time.h>
- C Library - <wctype.h>
- C Standard Library Resources
- C Library - Quick Guide
- C Library - Useful Resources
- C Library - Discussion
- C Programming Resources
- C Programming - Tutorial
- C - Useful Resources
C library - memcpy() function
The C library memcpy() function is also known as Copy Memory Block function / Memomy to Memory Copy. It is used to specify the range of characters which could not exceed the size of the source memory.
Syntax
Following is the syntax of the C library memcpy() function −
void *memcpy(void *dest_str, const void * src_str, size_t n)
Parameters
This function accepts the following parameters−
dest_str − This parameter define a pointer to the destination array where the content is to be copied. It is type-casted to a pointer of type void*.
src_str − This parameter is used to define the source of data to be copied. It is then type-casted to a pointer of type void*.
n − This parameter refer to number of bytes to be copied.
Return Value
This function returns a pointer to destination i.e. dest_str.
Example 1
The C library function memcpy() uses three parameters− destination string(dest), source string(src), and strlen() function where it calculates the length of the source string and the number of bytes to be copied.
#include <stdio.h> #include <string.h> int main () { const char src[50] = "Tutorialspoint"; char dest[50]; strcpy(dest,"Heloooo!!"); printf("Before memcpy dest = %s\n", dest); memcpy(dest, src, strlen(src) + 1); printf("After memcpy dest = %s\n", dest); return(0); }
Output
The above code produces following result−
Before memcpy dest = Heloooo!! After memcpy dest = Tutorialspoint
Example 2
Below the program uses two functions− puts() and memcpy() to copy the content from one memory address/location to another.
#include <stdio.h> #include <string.h> int main() { char first_str[] = "Tutorials"; char sec_str[] = "Point"; puts("first_str before memcpy:"); puts(first_str); // Copy the content of first_str to sec_str memcpy(first_str, sec_str, sizeof(sec_str)); puts("\nfirst_str after memcpy:"); puts(first_str); return 0; }
Output
On execution of above code, we get the following result−
first_str before memcpy: Tutorials first_str after memcpy: Point
Example
Following is the C program that demonstrate the code snippet of memcpy() function to represent the text before and after using certain action or process.
#include <stdio.h> #include <string.h> #define MAX_CHAR 100 int main() { char first_str[MAX_CHAR] = "Hello World!"; char second_str[MAX_CHAR] = "Welcome to Tutorialspoint"; printf("The Actual Statements:-\n"); printf("first_str: %s\n", first_str); printf("second_str: %s\n", second_str); //copying all bytes of second_str to first_str memcpy(first_str, second_str, strlen(second_str)); printf("After executing the function memcpy()\n"); printf("first_str: %s\n", first_str); printf("second_str: %s\n", second_str); return 0; }
Output
After executing the code, we get the following result−
The Actual Statements:- first_str: Hello World! second_str: Welcome to Tutorialspoint After executing the function memcpy() first_str: Welcome to Tutorialspoint second_str: Welcome to Tutorialspoint