模拟实现memmove

来源:互联网 发布:webform做数据库分页 编辑:程序博客网 时间:2024/06/07 05:37

memmove的实现要考虑内存重叠的情况


#include<stdio.h>#include<assert.h>#include<windows.h>#pragma warning (disable:4996)void *my_memmove(void *dst, const void *src, int count){assert(dst);assert(src);assert(count > 0);char *ret = dst;if (src >= dst || (char*)dst >= (char*)src + count){while (count-->0){*(char*)dst = *(char*)src;dst = (char*)dst + 1;src = (char*)src + 1;}}else//逆序{char *dst_end = *(char*)dst + count - 1;char *src_end = *(char*)src + count - 1;while (count-->0){*dst_end = *src_end;dst_end--;src_end--;}}return ret;}int main(){char msg[] = "asde123";char mag[32];int count = strlen(msg) + 1;        my_memmove(mag, msg, count);printf("%s\n", mag);system("pause");return 0;}


1 0
原创粉丝点击