The Code is as follows:
Copy codeThe Code is as follows: // MemMove. cpp: defines the entry point of the console application.
//
# Include "stdafx. h"
# Include <iostream>
Using namespace std;
Copy codeThe Code is as follows: void * memmove (void * dest, const void * src, size_t n)
{
If (n <= 0)
{
Cout <"Invalid count number." <endl;
}
If (dest = NULL | src = NULL)
{
Cout <"The dest or src address is null." <endl;
}
If (dest = src)
{
Cout <"The dest equals src." <endl;
}
If (char *) dest <= (char *) src | (char *) dest> = (char *) src + n)
{// Corresponds to three situations: 2, 3, and 4 in the graph. During the value assignment process, unused values in src are not overwritten.
Char * de = (char *) dest;
Const char * sr = (const char *) src;
While (n --)
{
* De ++ = * sr ++;
}
}
Else
{// The first condition in the corresponding graph
Char * de = (char *) dest + n-1;
Const char * sr = (const char *) src + n-1;
While (n --)
{
* De -- = * sr --;
}
}
Return dest;
}
Copy codeThe Code is as follows: void * memmcpy (void * dest, const void * src, size_t n)
{
If (n <= 0)
{
Cout <"Invalid count number." <endl;
}
If (dest = NULL | src = NULL)
{
Cout <"The dest or src address is null." <endl;
}
If (dest = src)
{
Cout <"The dest equals src." <endl;
}
Char * de = (char *) dest;
Const char * sr = (const char *) src;
While (n --)
{
* De ++ = * sr ++;
}
Return dest;
}
Copy codeThe Code is as follows: int _ tmain (int argc, _ TCHAR * argv [])
{
Char * p = "hello, world ";
Char dest [12] = {0 };
Char * q = (char *) memmove (dest, p, 5 );
Cout <dest <endl;
Cout <q <endl;
Return 0;
}