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;

}

相关推荐
SilentSamsara几秒前
模型可解释性业务化:SHAP/LIME 的业务汇报与合规审查
人工智能·算法·机器学习·自动化
kuro-shiro5 分钟前
SpringBoot 启动流程
java·spring boot·后端
吴声子夜歌6 分钟前
SQL进阶——EXISTS谓词
java·数据库·sql
byte轻骑兵7 分钟前
【LE Audio】CSIP精讲[5]: 蓝牙协同设备组的安全防护体系与实战规范
算法·安全·音频·le audio·低功耗音频
偏爱自由 !8 分钟前
8. 泛型程序设计
java·开发语言·windows
剑挑星河月8 分钟前
35.搜索插入位置
java·数据结构·算法·leetcode
海兰9 分钟前
【SpringBoot 】AOP企业级权限控制方案(二)
android·java·spring boot
偏爱自由 !10 分钟前
2:IDEA中git的使用--基础操作
java·git·intellij-idea
ch.ju10 分钟前
Java Programming Chapter 4——Class loading
java·开发语言
LiaoWL12312 分钟前
【SpringBoot合集-03】Spring Boot 启动过程学习
java·spring boot·学习