memcopy 是我个人实现的,我在网上查了这两个函数的区别,但是都不合我的意,他们的实现都会有一个缓存区,这个不合理,只要变换下思路就可以实现当 dst 的值 大于 src 值的时候的处理办法,代码如下(count– 和 –count 非常有学问)
#include <stdio.h>
#include <string.h>
void memcopy(void *dst, void *src, size_t count) {
char *dst_c = (char *)dst;
char *src_c = (char *)src;
if (dst_c < src_c) {
while (count--) {
*dst_c++ = *src_c++;
}
}
else if (dst_c > src_c){
dst_c = dst_c + count-1;
src_c = src_c + count-1;
while (count--) {
*dst_c-- = *src_c--;
}
}
}
int main() {
char s[] = "memmove can be very useful......";
char s1[] = "memmove can be very useful......";
char s2[] = "memmove can be very useful......";
puts(s);
memmove(s+20, s+15, 11);
puts(s);
puts(s1);
memcopy(s1+20, s1+15, 11);
puts(s1);
puts(s2);
memcpy(s2+20, s2+15, 11);
puts(s2);
return 0;
}