memmove函数c语言实现,【C语言】模拟实现memmove函数(考虑内存重叠)

//模拟实现memmove函数(考虑内存重叠)

#include

#include

#include

void * memmove(void * dst, const void * src, int count)

{

void * ret = dst;

assert(dst);

assert(src);

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()

{

char p[] = "hello!";

char *q = "world";

memmove(p, q,strlen(q)+1 );

printf("%s\n", p);

return 0;

}

C语言::模拟实现strlen函数

题目要求 编写一个C语言程序模拟实现strlen函数. 算法 strlen函数功能是计算字符串中字符的个数.(除\0外) 而字符串本身就是一个字符数组,只不过末尾以\0结束. 因此,我们只需遍历除\0 ...

C语言memmove()函数: 复制内存内容(可以重叠的内存块)

头文件:#include memmove() 用来复制内存内容,其原型为: void * memmove(void *dest, const void *src, s ...

【C语言】模拟实现atoi函数

atoi(表示 ascii to integer)是把字符串转换成整型数的一个函数. atoi()函数会扫描参数 nptr字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过isspace( ...

[C语言] 数据结构-预备知识跨函数使用内存

跨函数使用内存 一个函数运行结束,使用malloc函数分配的内存,如果不调用free,就不会释放 在另一个函数中还可以继续使用 #include #include &l ...

【C语言】模拟实现strcmp函数

//模拟实现strcmp函数 //str1>str2,返回1 //str1=str2,返回0 //str1 #incl ...

memmove函数

写一个函数,完成内存之间的拷贝 void* mymemcpy( void *dest, const void *src, size_t count ) { char* pdest = static_c ...

memmove 和 memcpy的区别以及处理内存重叠问题

区别: memcpy和memmove()都是C语言中的库函数,在头文件string.h中,作用是拷贝一定长度的内存的内容,原型分别如下: void *memcpy(void *dst, const v ...

面试题之实现系统函数系列一:实现memmove函数

编译环境 本系列文章所提供的算法均在以下环境下编译通过. [算法编译环境]Federa 8,linux 2.6.35.6-45.fc14.i686 [处理器] Intel(R) Core(TM)2 Q ...

数据结构笔记2(c++)_跨函数使用内存的问题

预备知识 1.所有的指针变量只占4个子节  用第一个字节的地址表示整个变量的地址 //1.cpp 所有的指针变量只占4个子节 用第一个字节的地址表示整个变量的地址 # include

随机推荐

shiro 自动登录

1.出现的错误:did not match the expected credentials---密码不匹配,后来自己写密码验证,其实作用不大: 配置

你可能感兴趣的:(memmove函数c语言实现)