c---内置函数模拟(memset,memcmp,memcpy,memmove)

void* my_memset(void* s1, int zifu, int num) {//引用string.h

assert(s1);

void* ret = &s1;

while (num--) {

*(char*)s1 = (char)zifu;

s1 = (char*)s1 + 1;

}

return ret;

}

int my_memcmp(const void* s1,const void* s2,int num) {

assert(s1 && s2);

while (num--) {

if (*(char*)s1 > *(char*)s2) {

return 1;

}

else if (*(char*)s1 < *(char*)s2) {

return -1;

}

s1 = (char*)s1 + 1;

s2 = (char*)s2 + 1;

}

return 0;

}

void* my_memmove(void* s1,const void* s2,int num) {

void* ret = &s1;

assert(s1 && s2);

if (s1 < s2) {

while (num--) {

*(char*)s1 = *(char*)s2;

s1 = (char*)s1 + 1;

s2 = (char*)s2 + 1;

}

}

else {

while (num--) {

*((char*)s1 + num) = *((char*)s2 + num);

}

}

return ret;

}

}void* my_memcpy(void* data1,const void* data2,int num) {

assert(data1 && data2);

void* ret = data1;

while (num--) {

*(char*)data1 = *(char*)data2;

data1 = (char*)data1 + 1;

data2 = (char*)data2 + 1;

}

return ret;

}

相关推荐
彷徨而立18 小时前
【C/C++】strerror、GetLastError 和 errno 的含义和区别?
c语言·c++
一个响当当的名号18 小时前
lectrue9 索引并发控制
java·开发语言·数据库
2401_8321319518 小时前
模板错误消息优化
开发语言·c++·算法
金枪不摆鳍18 小时前
算法--二叉搜索树
数据结构·c++·算法
进阶小白猿18 小时前
Java技术八股学习Day30
java·开发语言·学习
近津薪荼18 小时前
优选算法——双指针6(单调性)
c++·学习·算法
helloworldandy19 小时前
高性能图像处理库
开发语言·c++·算法
2401_8365631819 小时前
C++中的枚举类高级用法
开发语言·c++·算法
bantinghy19 小时前
Nginx基础加权轮询负载均衡算法
服务器·算法·nginx·负载均衡
hhy_smile19 小时前
Class in Python
java·前端·python