c语言练习题53:模拟实现memmove

模拟实现memmove

#include<stdio.h>
#include<assert.h>
void* my_memmove(void* dest, const void* src, size_t num)
{
	void* ret = dest;
	assert(dest != NULL);
	assert(src != NULL);
	if (dest < src) {//前相后
		while (num--) {
			*(char*)dest=*(char*)src;
			dest = (char*)dest + 1;
			src  = (char*)src + 1;
		}
	}
	else {//后相前
		//num=19
		while (num--) {
			*((char*)dest + num) = *((char*)src + num);
		}
	}
	return ret;
}
int main() {
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	my_memmove(arr+2, arr, 20);
	int i = 0;
	for (i = 0; i < 10; i++) {
		printf("%d ", arr[i]);
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/2301_77479435/article/details/132847863
今日推荐