自己实现的库函数(memset,memcmp,memcpy,memmove)

C语言库函数的模拟实现与使用(面试常考) 总结一下面试中常考的库函数的模拟实现和使用方法 阅读详情
 自己实现的库函数2(memset,memcmp,memcpy,memmove)
memset,memcmp,memcpy,memmove是对内存进行管理的库函数,为了更好的理解和使用这几个函数,自己用C语言实现一下~

//内存设置函数
void* my_memset(void* dest, int c, size_t count)
{
assert(dest != NULL);
char* pDest = (char*)dest;
while (count-->0)    //将内存中count个设置为c
{
*pDest++ = c;
}
return dest;
}
//内存比较函数
int my_memcmp(void* src1, void* src2, int len)
{
assert(src1 != NULL && src2 != NULL);
const char* pSrc1 = (char*)src1;
const char* pSrc2 = (char*)src2;
while (len-- > 0)
{
if (*pSrc1++ != *pSrc2++)   //当内存中的数据不相等时,可以比较出大小,否则两指针继续向后指
{
return *pSrc1 < *pSrc2 ? -1 : 1;
}
}
return 0;  //相等则返回0
}

要重点说一下内坤拷贝和内存移动函数。。。
memmove与memcpy都是将count个字节的源内存地址的内容拷贝到目标内存地址中,但当源内存和目的内存存在重叠时,memcpy会出现错误!memmove能正确拷贝,但也增加了一点点开销。
//内存拷贝函数
void* my_memcpy(void* dest, const void* src, size_t count)
{
assert(dest != NULL && src != NULL);
char* pDest = (char*)dest;
const char* pSrc = (const char*)src;
while (count-- > 0)
{
*pDest++ = *pSrc++; //将pSrc指向的数据复制count个给pDest
}
return dest;
}
//内存移动函数
void* my_memmove(void* dest, void* src, size_t count)
{
assert(dest != NULL && src != NULL);
char* pDest = (char*)dest;
const char* pSrc = (char*)src;
     if (pSrc >= pDest || pDest >= (pSrc + count))//当源内存地址在目的内存地址之后或者目的地址在源内存地址+count之后,可以正常拷贝
{


          while (count-- > 0)
{
*pDest++ = *pSrc;
}
}
else     //否则需要从后覆盖往前拷贝,防止出现覆盖
    {
while (count-- > 0)



{
*(pDest + count) = *(pSrc + count);
}
}
*pDest = '\0';
return dest;
} 
基于STM32设计的环境监测系统(华为云IOT)_300 随着空气污染问题日益严峻,环境空气质量的监测变得愈加重要。为了解决这一问题,本项目设计并实现了一款基于STM32的空气质量监测设备,能够实时监测空气中的温湿度、二氧化碳浓度和甲醛浓度,并通过OLED显示屏展示数据。此外,设备支持通过WIFI模块将数据上传至云端,用户可以通过手机APP或Windows上位机查看实时数据。设备采用MQTT协议与华为云IOT物联网服务器进行数据通信,确保数据的实时性和可靠性。本项目还结合了低功耗设计和高灵敏度传感器,使得设备能够高效稳定地运行,并实现远程监控功能。 阅读详情

相关推荐

从2-RSS-1U并联踝关节到双足机器人动态行走:雅可比矩阵与力矩控制实践

本文深入探讨了2-RSS-1U并联踝关节在双足机器人动态行走中的关键作用,详细解析了其设计原理、雅可比矩阵的应用及力矩控制实践。通过优化几何参数和控制算法,实现了低转动惯量、高刚度和紧凑设计,显著提升了机器人的行走稳定性和能量效率。文章还分享了从仿真到实物的跨越经验及未来优化方向。

weixin_42641998的博客 594

C语言内存函数:memcpy、memcat、memmove介绍和模拟实现(实用性高,建议三连收藏)

函数头文件:string.h①目的地指向要复制内容的目标数组的指针,类型转换为 void* 类型的指针。②源指向要复制的数据源的指针,类型转换为 const void* 类型的指针。③数量要复制的字节数。size_t是无符号整数类型。返回值类型:void*返回值:返回目的字符串的地址也就是考到到某个地方,这个某个地方的地址。函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。这个函数在遇到 '\0' 的时候并不会停下来。

m0_71503225的博客 2863

超声波 vs 红外 vs 激光雷达:扫地机器人避障传感器选型指南(实测对比)

本文深入对比了扫地机器人三种主流避障传感器——超声波、红外与激光雷达的核心原理与实测表现。文章基于成本、精度、环境适应性等关键指标,提供了清晰的选型决策树和典型场景配置方案,旨在帮助开发者与爱好者根据项目需求与预算,构建高效可靠的机器人避障系统。

h0i1j2k3l的博客 690

strcpy、strcat、memcpy、memmove函数的使用及模拟实现

是C语言中的一个标准库函数,用于复制字符串。它位于 头文件中,函数原型为: 该函数的功能是从源字符串 中复制字符到目标字符串 ,直到遇到空字符('\0')为止,即复制包括空字符在内的一整个字符串。注意: 2、模拟实现 二、memcpy函数的使用及模拟实现 1、使用 是C语言中用于复制内存区域的标准库函数,它位于 头文件中。其原型定义为: dest:指向目标内存区域的指针。 src:指向源内存区域的指针。 n:要复制的字节数。 函数将从 指向的内存区域复制 个

weixin_74202161的博客 849

CAD二次开发(C#版):从零搭建开发环境与核心DLL引用指南

本文详细介绍了使用C#进行CAD二次开发的环境搭建与核心DLL引用指南,涵盖Visual Studio配置、AutoCAD插件项目创建、DLL引用技巧及调试方法。通过实战示例和常见问题排查,帮助开发者快速掌握CAD二次开发的核心技术,提升开发效率。

weixin_28837817的博客 727

标签传播算法LPA:半监督学习解决标注数据不足的完整实战指南

在机器学习实际工程中,标注数据稀缺往往是制约模型性能的核心瓶颈。半监督学习提供了一条利用海量未标注数据来增强模型泛化能力的有效路径,其中标签传播算法(Label Propagation Algorithm, LPA)因其直观的图结构和优雅的数学原理而备受关注。LPA通过将样本映射为图中的节点,以相似度作为边权重,让已知标签沿着图结构不断扩散,从而实现对未知样本的预测。其背后基于聚类假设与流形假设,能在低标注率场景下显著缓解过拟合问题,提升分类准确率。该技术在文本分类、金融风控、图像识别等存在大量无标注数据的

weixin_29056781的博客 239

字符串的相关函数的详细讲解和实现包括(strlen,strcpy,strncpy,strcat,strncat,strcmp,strstr)

字符串的相关函数的详细讲解和实现包括(strlen,strcpy,strncpy,strcat,strncat,strcmp,strstr)

m0_70117540的博客 648

别再为环保数采仪通讯发愁!手把手教你用MCGS触摸屏+4G模块发送HJ212报文

本文详细介绍了如何使用MCGS触摸屏配合4G模块高效发送HJ212标准报文,解决工业环保监测中的数据采集与传输难题。从硬件连接到软件配置,再到报文组装与发送策略,提供全流程实用指南,特别针对4G网络环境下的特殊设置给出优化建议,帮助工程师提升数据传输稳定性与效率。

weixin_30847865的博客 388

memcmp函数详解 看这一篇就够了-C语言(函数讲解、函数实现、使用用法举例、作用、自己实现函数 )

memcmp()函数用于:比较两个内存块

kim的博客 2万+

组态王|通过日历控件选择时间段查询历史报警

哈喽,你好啊,我是雷工!这节记录下查询历史报警信息的功能实现。以下为实现笔记。

做有价值的事,积累有价值的笔记! 3758

android11.0 Launcher3 高端定制之循环滑动

待机界面可以向左、向右循环切换页面 效果图 修改清单 packages/apps/Launcher3/res/values-zh-rCN/strings.xml packages/apps/Launcher3/res/values/config.xml packages/apps/Launcher3/res/values/strings.xml packages/apps/Launcher3/res/xml/launcher_preferences.xml packages/apps/Launc

cczhengv 1548

详解strcpy与memcpy、strcat与memmove以及memcpy与memmove的区别

本期主要讲解的是memcpy,memmove,strcat

忘忧. 612

2024年电气工程师最新面试题及答案

1. **基本电气工程原理**:包括电流、电压、电阻、功率等基本概念。2. **欧姆定律**:V = IR,描述电压、电流和电阻之间的关系。42. **风力发电系统组成**:包括风力涡轮机、发电机、控制系统等。44. **智能电网技术**:包括自动化控制、通信技术、数据分析等。10. **减少EMI**:使用屏蔽、滤波、合理布线等方法。40. **光伏系统组成**:包括光伏板、逆变器、控制器等。48. **能量存储技术**:包括电池、超级电容器、飞轮等。

guo162308的博客 6561

自己实现的库函数2(memset,memcmp,memcpy,memmove)

memset,memcmp,memcpy,memmove是对内存进行管理的库函数,为了更好的理解和使用这几个函数,自己用C语言实现一下~ //内存设置函数void* my_memset(void* dest, int c, size_t count){ assert(dest != NULL); char* pDest = (char*)dest; while (count-->0) ...

weixin_30687587的博客 111

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

c语言-库函数memcpy()、memmove()、memcmp()、memset()介绍

本篇文章介绍c语言库函数memcpy()、memmove()、memcmp()、memset()的使用。

pyc68的博客 1558

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

c语言常见内存函数的使用与模拟实现

c语言提供了几个用于内存操作的函数,包括memcpy,memmove,memset,memcmp。这些函数可以高效且可靠的处理数据,本文将简单向大家介绍一下这些函数的使用,并简单模拟实现一下。

htw250056的博客 1042

内存函数的库函数

声明:由于本人水平有限,文章中难免有不准确和错误之处本人也很想知道这些错误,恳请读者批评指正,大家一起努力,加油! 本章主要介绍内存相关的库函数 目录 memcpy 模拟实现: memmove 模拟实现: memcmp 例子 memset 例子 memcpy 作用介绍:将source中的num个字节拷贝到destination中(拷贝不重叠的内存) 函数的使用: int main() { int arr1[10] = { 0 }; int arr2[] =...

m0_62907703的博客 677

十大字符串函数与内存操作函数

万字详解十大字符串函数与内存操作函数!!!

weixin_72868952的博客 442

字符和字符串库函数及其模拟(strlen,strcpy,strcat,strstr,strncat,strncmp,strncpy,atoi,memmove等库函数模拟实现)

一、字符及字符串操作库函数 strlen 求字符串长度 定义 strlen返回值为size_t即无符号整型,另外长度不包括’\0’。 使用 程序: #include<stdio.h> #include<Windows.h> #include<string.h> int main() { const char* str1 = "abcdef"; const char* str2 = "bbb"; if (strlen(str2) - strlen(str1) &gt

qq_44631587的博客 493

简单实现的几个C语言<string>库函数

「」 库函数算是C语言中较为常用的库了,这里简单实现了几个库函数。实现肯定会存在部分漏洞。   0.「预编译」 若要将以下函数实现封装为一个库,便需要将一下每一个函数实现写为一个 .h 文件,并加上这个预编译.h文件 #ifndef _M_STRING #define _M_STRING #ifndef _YVALS #include #endif #ifndef NUL

ZoMoe's eye 1621

【进阶】3. 字符函数和字符串函数

本文主要介绍了C语言当中常用的字符串函数,以及一些对应的模拟实现

The_bad的博客 730

【C语言航路】第十一站:字符串、字符和内存函数

最常使用的字符串函数,内存函数,字符函数的使用,以及一些重要的函数的实现

青色_忘川的博客 996

c语言库函数功能模拟实现

在c语言中,会用到一些库函数和内存函数,这篇文章就是讲解一些主要的库函数和内存函数的功能实现以及模拟实现

weixin_73000974的博客 738

11字符及字符串函数的使用和模拟实现

C语言中式没有字符串类型的,字符串变量一般放在常量字符串中(用字符指针指向)或者字符数组中,因此本章将介绍处理字符和字符串的库函数的使用和注意事项。 文章目录一、求字符串长度1.1strlen1.1.1strlen库函数的模拟实现二、长度不受限制的字符串函数2.1strcpy2.1.1strcpy模拟实现2.2strcat2.2.1strcat模拟实现2.3strcmp2.3.1strcmp模拟实现三、长度受限制的字符串函数3.1strncpy3.1.1strncpy模拟实现3.2strncat3.2.1

精致的灰的博客 559

C语言:字符串函数和内存操作函数

文章介绍了字符串函数和内存操作函数.内含源码分析及模拟实现.

想学好c++的oMen的博客 275

【C进阶】鹏哥带你玩转 · 字符串和内存函数

大家好,我是安然无虞。 一、函数介绍 C语言中对字符和字符串的操作处理很是频繁,但是C语言本身是没有字符串类型的,所以C语言中的字符串通常放在常量字符串中或者字符数组中; 字符串常量适用于那些对它不作任何修改的字符串函数中。 1、strlen() 函数原型: 注意:返回值类型是 size_t,这 size_t 到底是什么? 其实 size_t 是为 sizeof 操作符返回值设计的,可以浅显的认为 size_t 就是我们熟知的 unsigned int ,因为是求长度,所以肯定不.

安然无虞的博客 2082

C:震惊!!内存函数函数还能这么玩??

函数实现的要求,把src的N个字节的元素拷贝到des的位置,并要求有重叠部分数据不会覆盖。b数组:01 00 00 00 02 00 00 00 03 00 00 00 03。a数组:01 00 00 00 02 00 00 00 03 00 00 00 04。a数组:00 00 00 01 00 00 00 02 00 00 00 03 00。b数组:00 00 00 01 00 00 00 02 00 00 00 03 00。.如果复制部分有重叠,复制的结果是未知的.

2401_83251330的博客 1043
上一篇: C语言指针相关定义的练习题及答案
下一篇: C语言字符串相关知识点
山农
博客等级 码龄10年 44粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值