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 小时前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端
令人头秃的代码0_01 小时前
mac(m5)平台编译openjdk
java
JieE21210 小时前
LeetCode 56. 合并区间|超清晰 JS 图解思路,面试高频区间题
javascript·算法·面试
Jack2018 小时前
HarmonyOS开发中错误处理策略:网络异常统一处理
算法
小小杨树20 小时前
读懂色彩:拍照调色不再难
算法·计算机视觉·配色
唐青枫1 天前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马1 天前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户3721574261351 天前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
用户3721574261351 天前
Java 打印 Word 文档:从基础打印到高级设置
java
JieE2121 天前
LeetCode 226. 翻转二叉树|JS 递归超详细拆解,二叉树入门经典题
javascript·算法