C语言模拟实现memcpy、memmove、memset
2017-07-10 17:34
633 查看
1,模拟实现memcpy
功能:内存拷贝函数代码:
void* my_memcpy(void* dest, void* src, size_t n) { void* ret = dest; char* str1 = (char*)dest; char* str2 = (char*)src; assert(dest); assert(src); while (n--) { *str1++ = *str2++; } return ret; }
2,模拟实现memove
功能:当内存拷贝出现位置冲突时,可使用memove.代码:
void* my_memmove(void* dest, void* src, size_t n) { void* ret = dest; char* str1 = (char*)dest; char* str2 = (char*)src; assert(dest); assert(src); if (str1 > str2) { while (n--) { *(str1 + n) = *(str2 + n); } } else { while (n--) { *str1++ = *str2++; } } return ret; }
测试:
int main() { int i = 0; int arr1[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int arr2[10] = { 0 }; int arr3[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; my_memcpy(arr2, arr1, sizeof(arr1)); my_memmove(arr3 + 5, arr3 + 4, 3 * sizeof(int)); for (i = 0; i < 10; i++) { printf("%d ", arr2[i]); } printf("\n"); for (i = 0; i < 10; i++) { printf("%d ", arr3[i]); } system("pause"); return 0; }
3,模拟实现memset
功能:将s中前n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。代码:
void * my_memset(void* src, int ch, size_t count) { assert(src != NULL); void* start = src; while (count--) { *(char*)src = (char)ch; src = (char*)src + 1; } return start; }
测试:
int main() { char arr[] = "abcdef"; char* ret = my_memset(arr, '*', 3); printf("%s\n", ret); system("pause"); return 0; }
相关文章推荐
- C语言中memcpy、memset和memmove的实现
- c语言内存管理函数,模拟memcpy、memmove(实现内存重叠拷贝)、memset
- 模拟实现memcpy,memmove,memset
- 用c语言.模拟实现strcpy,strcat,strcat,memcpy,memmove
- 模拟实现函数库中的常用函数,1实现strcpy 2.实现strcat 3.实现strstr 4.实现strchr 5.实现strcmp 6.实现memcpy 7.实现memmove,8实现memset
- 模拟实现部分库函数(strcpy,strcmp,strcat,strstr,memcpy,memmove,memset)
- 【c语言】模拟实现memcpy()、memmove()函数
- strcpy,strcmp,strstr,strcat,memcpy,memmove,memset的模拟实现
- 模拟实现memcpy,memmove,memset
- C语言模拟实现memcpy和memmove
- 用c语言.模拟实现strcpy,strcat,strcat,memcpy,memmove
- C语言模拟实现memcpy,memmove函数
- [转]strcpy()、memcpy()、memmove()、memset()的实现
- strcpy()、memcpy()、memmove()、memset()的实现
- strcpy,memset,memmove,memcpy的实现
- strcpy()、memcpy()、memmove()、memset()的实现
- strcpy()、memcpy()、memmove()、memset()的实现
- strcpy()、memcpy()、memmove()、memset()的实现
- memset ,memcpy ,memmove,strcpy 的根本区别 与实现
- strcpy()、memcpy()、memmove()、memset()的实现