C语言中memcpy、memset和memmove的实现
2011-10-15 00:19
537 查看
1) memcpy():
主要实现的是两段内存的复制
2) memset():
实现对一段内存进行初始化
3)memmove():
主要是实现一段内存的内容移动到另一段内存。
实现的代码如下:#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
void* Mymemcpy(void* dest, const void* src, unsigned int size)
{
unsigned int i = 0;
char* p = (char*)dest;
char* q = (char*)src;
assert(dest != NULL && src != NULL);
if(size > 0)
{
while((i < size) && (*(p + i) = *(q + i)))
i++;
return dest;
}
return NULL;
}
void* Mymemset(void* dest, int ch, unsigned int size)
{
unsigned int i = 0;
unsigned char* p = (unsigned char*)dest;
while((i < size) && (*(p + i) = ch))
{
i++;
}
return dest;
}
void* Mymemmove(void* dst, const void* src, unsigned int count)
{
void *ret = dst;
if(dst <= src || (char*)dst >= ((char*)src + count))
{
while(count--)
{
*(char*)dst = *(char*)src;
dst = (char*)dst + 1;
src = (char*)src + 1;
}
}
else
{
dst = (char*)dst + count - 1;
src = (char*)src + count - 1;
while(count--)
{
*(char*)dst = *(char*)src;
dst = (char*)dst - 1;
src = (char*)src - 1;
}
}
return(ret);
}
int main()
{
int size;
char* p = (char*)malloc(10 * sizeof(char));
char* dst = (char*)malloc(5 * sizeof(char));
Mymemset(p,'a',10);
puts(p);
Mymemmove(dst, p, 5);
puts(dst);
system("pause");
return 0;
}
主要实现的是两段内存的复制
2) memset():
实现对一段内存进行初始化
3)memmove():
主要是实现一段内存的内容移动到另一段内存。
实现的代码如下:#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
void* Mymemcpy(void* dest, const void* src, unsigned int size)
{
unsigned int i = 0;
char* p = (char*)dest;
char* q = (char*)src;
assert(dest != NULL && src != NULL);
if(size > 0)
{
while((i < size) && (*(p + i) = *(q + i)))
i++;
return dest;
}
return NULL;
}
void* Mymemset(void* dest, int ch, unsigned int size)
{
unsigned int i = 0;
unsigned char* p = (unsigned char*)dest;
while((i < size) && (*(p + i) = ch))
{
i++;
}
return dest;
}
void* Mymemmove(void* dst, const void* src, unsigned int count)
{
void *ret = dst;
if(dst <= src || (char*)dst >= ((char*)src + count))
{
while(count--)
{
*(char*)dst = *(char*)src;
dst = (char*)dst + 1;
src = (char*)src + 1;
}
}
else
{
dst = (char*)dst + count - 1;
src = (char*)src + count - 1;
while(count--)
{
*(char*)dst = *(char*)src;
dst = (char*)dst - 1;
src = (char*)src - 1;
}
}
return(ret);
}
int main()
{
int size;
char* p = (char*)malloc(10 * sizeof(char));
char* dst = (char*)malloc(5 * sizeof(char));
Mymemset(p,'a',10);
puts(p);
Mymemmove(dst, p, 5);
puts(dst);
system("pause");
return 0;
}
相关文章推荐
- C语言模拟实现memcpy、memmove、memset
- strcpy()、memcpy()、memmove()、memset()的实现
- C语言实现memcpy和memmove
- 模拟实现memcpy,memmove,memset
- C语言字符串相关库函数的实现strcpy、memcpy、strncpy、strcat、strncpy、memset、memcpy、strcpy
- strcpy()、memcpy()、memmove()、memset()的实现
- memcpy,strcpy,memset,memmove的函数实现
- strcpy()、memcpy()、memmove()、memset()的实现
- strcpy,memset,memmove,memcpy的实现
- strcpy()、memcpy()、memmove()、memset()的实现
- memcmp,memcpy,memmove,memset,strcat,strcmp,strcpy,strlen 8个函数的实现
- 转载:函数实现-memcpy-strcpy-memmove-memset
- strcpy()、memcpy()、memmove()、memset()的实现
- C语言模拟实现memcpy,memmove函数
- 笔试题 字符串函数的实现(strcpy, strcat, strcmp, memset, memcpy, memmove)
- 【C语言】str类与men库函数的实现(如:strcpy,strcmp,strstr,strcat,memmove,memcpy)
- 函数实现-memcpy-strcpy-memmove-memset
- 41.内存函数实现(memcpy,memset,memmove,memicmp,memchr.memccpy)
- strcpy()、memcpy()、memmove()、memset()的实现
- memcpy,memset,memmove的使用与实现