#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
Analog memcpy
void my_momcpy (char *dest, const char *str, int Count)
{
assert (dest! = NULL);
assert (str = NULL);
char *ret = dest;
int i = 0;
for (i = 0; i < count; i++)
{
*dest++ = *str++;
}
}
int Main ()
{
Char a[100] = "abcdef" ;
my_momcpy (A + 1, a + 2, 2);
printf ( "%s\n", a);
System ( "pause");
return 0;
}
/* MEMCPY. C:illustrate overlapping Copy:memmove
* handles it correctly; memcpy does not.
*/
#include <memory.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
Char string1[60] = "The quick brown dog jumps over the lazy Fox" ;
Char string2[60] = "The quick brown fox jumps over the lazy dog" ;
/* 1 2 3 4 5
* 12345678901234567890123456789012345678901234567890
*/
void Main (void )
{
printf ( "\t\t%s\n", string1);
printf ( "\t\t%s\n", string2);
printf ( "function:\tmemcpy without overlap\n" );
printf ( "source:\t\t%s\n", string1 + +);
printf ( "destination:\t%s\n", string1 + +);
memcpy (string1 + +, string1 + 40, 3);
printf ( "result:\t\t%s\n", string1);
printf ( "length:\t\t%d characters\n\n" , strlen (string1));
/ * Restore string1 to original contents * /
memcpy (string1 + +, string2 + 40, 3);
printf ( "Function:\tmemmove with overlap\n" );
printf ( "source:\t\t%s\n", string2 + 4);
printf ( "destination:\t%s\n", string2 + ten);
Memmove (string2 + ten, string2 + 4, 40);
printf ( "result:\t\t%s\n", string2);
printf ( "length:\t\t%d characters\n\n" , strlen (string2));
printf ( "function:\tmemcpy with overlap\n" );
printf ( "source:\t\t%s\n", string1 + 4);
printf ( "destination:\t%s\n", string1 + ten);
memcpy (string1 + ten, string1 + 4, 40);
printf ( "result:\t\t%s\n", string1);
printf ( "length:\t\t%d characters\n\n" , strlen (string1));
System ( "pause");
}
First understanding and understanding of memcpy