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;

}

相关推荐
做怪小疯子1 分钟前
LeetCode 热题 100——哈希——字母异位词分组
算法·leetcode·哈希算法
大隐隐于野15 分钟前
从零开始理解和编写LLM中的KV缓存
java·缓存·llm
DKunYu33 分钟前
1.多线程初阶
java·开发语言
Einsail33 分钟前
贪心算法,优先队列(大小根堆使用)
算法·贪心算法
小欣加油33 分钟前
leetcode 474 一和零
c++·算法·leetcode·职场和发展·动态规划
尤利乌斯.X40 分钟前
在Java中调用MATLAB函数的完整流程:从打包-jar-到服务器部署
java·服务器·python·matlab·ci/cd·jar·个人开发
spencer_tseng1 小时前
easy-captcha-1.6.2.jar
java·jar
旭编1 小时前
牛客周赛 Round 117
java·开发语言
无敌最俊朗@1 小时前
01-总结
java·jvm·数据库
华仔啊2 小时前
MyBatis-Plus 让你开发效率翻倍!新手也能5分钟上手!
java·后端·mybatis