#include <stdio.h>
void* memmove(void* s1, const void* s2, size_t n) {
// copy n characters from s2 to s1
char* str1 = (char*)s1;
const char* str2 = (const char*)s2;
if (str2 < str1 && str1 < str2 + n)
for (str1 += n, str2 += n; 0 < n; n--)
*--str1 = *--str2; // backward copy
else
for (; 0 < n; n--)
*str1++ = *str2++; // forward copy
return s1;
}
int main()
{
char str1[16] = "";
char str2[16] = "c programming";
memmove(str1, str2, 5);
puts(str1);
return 0;
}
/*
run:
c pro
*/