模拟实现多种函数(strlen,strcpy,strcat,strstr,strcmp,memcpy,memmove)

C语言模拟实现库函数strlen、strcpy、strcat、strcmp、strncpy、strncat、strncmp、strstr、strtok、memcpy、memmove、memcmp 注意:所有库函数头文件都是C 库函数 size_t strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符,这里注意一点,再用sizeof求内存大小时会计算到'\0'下面是 strlen() 函数的声明。该函数返回字符串的长度。#include #include int is_prime_values_my_strlen(char* str) { //断言 assert(s 阅读详情

●模拟实现strlen三种方式:
方式一

 //计数器方式
int my_strlen(const char *str)
{
int count = 0;
while(*str)
{
count++;
str++;
}
return count;
}

方式二

//不能创建临时变量计时器
int my_strlen(const char *str)
{
if(*str=='\0')
return 0;
else
return 1+my_strlen(str+1);
}

方式三

//指针-指针方式
int my_strlen(char * s)
{
char *p = s;
while(*p!=‘\0’)
    p++;
return p-s;
}

●模拟实现strcpy:

注意
       ● 参数顺序。
       ●函数的功能、停止条件
       ●assert
       ●const 修饰指针
       ●函数返回值

char *my_strcpy (char * dest,const char * src)
{
char*ret=dest;
assert(dest!=NULL);
assert(src!=NULL);
while((*dest++=*src++))
{
   ;
}

return ret;
}

●模拟实现strcat:

char * my_strcat(char * dest,const char * src)
{
char * ret = dest;
assert(dest!=NULL);
assert(src!=NULL);
while(*dest)
{
   dest++;
}
while((*dest++=*src++))
{
   ;
}
return ret;
}

●模拟实现strstr:

char * my_strstr(const char * str1,const char * str2)
{
assert(str1);
assert(str2);
char * cp=(char*)str1;
char * substr=(char*)str2;
char * s1=NULL;
if(*str2=='\0')
return NULL;
while(*cp)
 {
    s1=cp;
    substr=str2;
   while(*s1 && *substr&&(*s1==*substr))
   {
   s1++;
   substr++;
   }
if(*substr=='\0')

  return  cp;
  cp++;
  }
}

●模拟实现strcmp:

int my_strcmp(const char * src,const char * dst)
{
int ret = 0;
while(!(ret =*(unsignedchar*)src-*(unsignedchar*)dst)&&*d
st)
   ++src,++dst;
   if(ret < 0)
   ret = -1;
else if(ret > 0)
   ret = 1;
return(ret);
}

●模拟实现memcpy:

void *memcpy(void * dst,const void * src,size_tcount)
{
void *ret = dst;
while(count--)
  {
     *(char*)dst=*(char*)src;
     dst=(char*)dst+1;
     src=(char*)src+1;
  }
return(ret);
}

●模拟实现memmove:

void * memmove(void *dst,const void * src,size_tcount)
{
void *ret = dst;
if(dst<=src||(char*)dst>=((char*)src+count))
{
   while(count--)
    {
        *(char *)dst=*(char*)src;
        dst=(char*)dst+1;
        src=(char*)src+1;
    }
}
else
{
      dst=(char*)dst+count-1;
      src=(char*)src+count-1;
      while(count--)
      {
          *(char*)dst=*(char*)src;
           dst=(char*)dst-1;
           src=(char*)src-1;
       }
}
return(ret);
}
【C语言】特性描述及模拟实现strlen、strcpy、strcat、strchr、strstr、strcmp、memcpy、memmove 特性描述及模拟实现strlen、strcpy、strcat、strchr、strstr、strcmp、memcpy、memmove   在学习C语言的过程中,不可避免的会经常接触一些库函数,那么有没有小伙伴想过这些库函数怎么实现的呢?   往往这些库函数都是用最精炼最高效的方式写出的,观摩并模拟出库函数的实现,有利于我们对C语言的深入理解。   今天我将我总结的字符串操作函数及其对应的一些小... 阅读详情

相关推荐

c语言自己实现strlen函数

c语言本身有strlen函数,这个是利用递归自己写的

模拟实现strlen、strcpy、strcat、strcmp长度不受限制的字符串函数

模拟实现strlen函数 模拟实现strcpy函数 模拟实现strcat函数 模拟实现strcmp函数 模拟实现strlen函数 实现strlen函数有三种方法:递归实现、非递归实现、指针-指针实现。 int my_strlen(const char *str) my_strlen函数有一个参数类型为const char*的形参,作为接收要计算的...

cottonrose_orange的博客 1039

海康工业相机BayerRG8转BGR8实战:手把手教你用OpenCV实现高效图像转换

本文详细解析了海康工业相机BayerRG8格式到BGR8格式的高效转换实战。针对工业视觉项目中高帧率、大分辨率场景下的性能瓶颈,文章对比了海康SDK原生方案与OpenCV多种转换方法的优劣,并提供了从基础实现到高级优化(如多线程流水线、内存管理、SIMD指令集应用)的完整代码示例与性能调优策略,帮助开发者构建稳定、高效的图像处理系统。

weixin_29237635的博客 524

模拟实现strcpy和strlen函数

模拟实现strcpy函数 #define _CRT_SECURE_NO_WARNINGS #include  #include  void *my_strcpy(char *pdest,const char *psrc)//自定义strcpy函数    {   char* ret = pdest;   assert(pdest);//断言   assert(psrc);

如风逝去 791

IBTrACS v04r01 数据提取实战:Pandas 筛选 JTWC/CMA/JMA 3机构最佳路径数据

本文详细介绍了如何使用 Pandas 高效提取和处理 IBTrACS v04r01 数据集中的最佳路径数据,特别针对 JTWC、CMA 和 JMA 三家权威机构的数据进行对比分析。通过构建可复用的数据提取函数,解决多机构数据质量差异问题,并提供高级分析与可视化应用示例,助力热带气旋研究。

clijovtbq401783153的博客 516

X猫免费小说安卓逆向分析

七猫免费小说安卓逆向分析 难度(♥♥) 文章目录七猫免费小说安卓逆向分析 难度(♥♥)1. 查壳2. 抓包分析3. sign1. Frida-rpc2. Native函数分析快3点了. 睡觉~ 白天再继续写! 1. 查壳 我这边使用的是ApkTool, 拖进去显示未加壳。 2. 抓包分析 POST https://xiaoshuo.wtzw.com/api/v1/login/index HTTP/1.1 net-env: 1 channel: qm-cbcpa056_wm is-white: 0 platf

Qiled的博客 4368

模拟实现strcpy、模拟实现strlen、模拟实现strstr函数

1.模拟实现strcpy(strcpy函数的功能是实现字符串的复制) 方法一: 算法思想:定义两个指针变量dest、str,分别指向目的字符串、原字符串,只要str指向的内容不为\0,完成复制,返回目的字符串的首地址 注意:(1)将原字符串指针定义为 const类型(只读,不可修改)             (2)这个函数是模拟strcpy库函数,其返回值是目的字符串的地址,所以调用时直接

lyl194458的博客 680

YOLOv5 实现 10 种热力图可视化方式教程 | GradCAM XGradCAM ScoreCAM LayerCAM HiResCAM EigenCAM....

基于梯度计算类激活图,是最经典的热力图生成方法之一。Grad-CAM的改进版,通过引入梯度加权的方式,提高了热力图的定位精度。基于类别的得分计算类激活图,对噪声具有更强的鲁棒性。基于特定层的特征图计算类激活图,可以灵活选择不同的层进行分析。通过上采样将低分辨率的特征图恢复到原始图像大小,提高了热力图的分辨率。基于特征图的特征向量进行PCA降维,得到更简洁的热力图。对Grad-CAM的进一步改进,通过加权平均的方式,提高了热力图的质量。基于积分梯度的方法,可以解释模型对输入的每个特征的贡献。

weixin_39818775的博客 2374

C语言:模拟实现strlen、strcpy、strcat、strstr、strcmp函数

当我们在学习字符串的时候,经常会使用到strlen、strcpy、strcat、strstr、strcmp这几个库函数,但今天我们就用代码来自己实现my_strlen、my_strcpy、my_strcat、my_strstr、my_strcmp这几个函数。 strlen 功能:计算字符串长度(不计算’\0’) 返回值类型:int 实现my_strlen有三种方式: 1.计数法 思路...

The Laughing Uncle的博客 1570

【ROS】Nav2源码之nav2_collision_monitor(碰撞监测)详解

nav2_collision_monitor碰撞监视器是一个节点,为机器人提供了一个额外的安全级别。它使用来自传感器的数据,执行若干与避免碰撞相关的任务,绕过成本图和轨迹规划器,监测是否需要紧急停止或者减速。

郭老二 1456

IP-guard发布新版本4.87.2241.0

IP-guard发布了新版本4.87.2241.0,用户可通过提供的下载地址获取完整安装包和升级包。下载后,用户需联系厂家申请测试序列号以进行安装和使用。IP-guard是一款专注于企业文件加密、文档加密系统、防泄密软件、数据安全的软件。

IP-Guard专栏 1531

手撕字符串库函数——多种方法模拟实现strlen、strcpy、strcat、strstr、strcmp、memcpy、memmove(干货满满)

相信大家对着个函数一定并不陌生,它的作用是计算字符串长度.//函数原型字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包含 '\0' )。参数指向的字符串必须要以 '\0' 结束。注意函数的返回值为size_t,是无符号的( 易错 )在这里希望大家能够注意上述第三点的内容,例如下面这段代码int main()elsereturn 0;

whelloworldw的博客 418

华为od统一考试B卷【宜居星球改造计划】Java&Go 实现

XXX年,人类通过对火星的大气进行宜居改造分析,使得火星已在理论上具备人类宜居的条件,由于技术原因,无法一次性将火星大气全部改造,只能通过局部处理形式,假设将火星待改造的区域为row * column的网格每个网格有3个值,宜居区、可改造区、死亡区,使用YES、NO、NA代替,YES表示该网格已经完成大气改造,NO表示该网格未进行改造,后期可进行改造,NA表示死亡区,不作为判断是否改造完成的宜居,无法穿过 初始化下,该区域可能存在多个宜居区,并且每个宜居区能同时在每个太阳日单位向上下左右四个方向的相邻格子进

MISAYAONE的博客 1万+

模拟实现strlen,strcpy,strcat,strcmp,strstr,memcpy,memmove

1.三种方式模拟实现strlen函数。 2.模拟实现strcpy 3.模拟实现strcat 4.模拟实现strcmp 5.模拟实现strstr 6.模拟实现memcpy 7.模拟实现memmove

aidoudoua的博客 347

R语言机器学习:XGBoost线性回归模型的SHAP值

SHAP(SHapley Additive exPlanations)值是一种基于博弈论Shapley值的机器学习模型解释方法,能够解释任何模型的预测结果。其主要用途包括:1)提高模型的可解释性,帮助非技术用户理解模型预测;2)识别对模型预测最重要的特征,辅助特征选择;3)调试模型,发现预测中的异常;4)评估模型公平性,避免偏见。SHAP值的计算方法包括初始化、迭代计算、归一化和解释,常用工具如Python的shap库支持多种计算方式(如TreeSHAP、KernelSHAP等)。本文还提供了基于R语言计算

专注生信领域 3441

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

常用库函数的模拟实现

模拟实现常见库函数  strlen(字符串长度) size_t strlen (const char* str); strlen以'\0'为结束标志 函数返回的是在'\0'前面出现的字符的个数 函数的返回类型是size_t(无符号整形) //计数器方式 int my_strlen(const char* str) { int count = 0; assert(...

Mr.Li的博客 370

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

字符操作:strlen、strcpy、strcat、strcmp、strstr、strtok。内存操作:memset、memcpy、memmove。用法、细节、及部分模拟实现。

strlen的用法和细节、以及自己模拟实现的strlen。 strlen是对字符串大小求长度,只能用来求字符串的大小,可不能和sizeof混淆哦,strlen是一个函数,sizeof是一个操作符!具体细节,前面有文章讲了。 strlen求字符串的大小的时候,遇到\0就终止,但是\0不算在字符串长度里哦 举个例子: 下面三个是模拟实现的strlen。 assert函数是为了确保指针合法,不是野指针。 ```c #include <stdio.h> #include <windows.h&gt

Zhou000815的博客 4824

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【关于库函数的模拟实现】——strlen,strcpy,strcmp,,strcat,strstr,memcpy,memmove

字符串操作函数是C语言中非常重要的函数,里面包括了指针的精华,同时对学习数据结构,如链表,数组,有非常好的练手方法。同时,知道内部实现,是基础中的基础。所以学习字符串操作函数是深入学C的必经之路。

weixin_73807021的博客 492

C语言--assert、strlen、strcpy、strcat、strcmp、strncpy、strncat、strstr、strtok、strerror、memcpy、memmove、memcmp

这篇博客介绍了常用的字符函数以及内存操作函数

2301_78847073的博客 902

C语言模拟实现strlen、strcpy、strcat、strstr、strcmp、memcpy、memmove

一、strlen函数 1.函数介绍 strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符’\0’为止,然后返回计数器值(长度不包含’\0’)。 之前我在博客中写过关于数组运算中strlen和sizeof的区别,这里就不再多说了,附上连接:https://blog.youkuaiyun.com/...

cherrydreamsover的博客 651

模拟实现strcmp,strncmp,strstr,strcat,strncat,strcpy,strncpy,strlen ,memcpy,memmove等函数

1.模拟实现strlen函数 #include #include #include int my_strlen(const char *str)//循环 { int count  = 0; assert(str); while(*str)//遍历字符串,用计数器计数 { count++; str++; } return count; } int my_strlen(c

深海一诺 928

C语言——strlen、strcpy、strcat、strcmp、strstr、memcpy、memmove函数的使用和模拟以及字符分类函数

strlen 首先我们先看c语言库函数实现strlen求字符串长度: 从以上图片中我们可以看出strlen是求字符串的长度,求的长度是\0之前的字符串,返回值的类型是无符号整型 #include <stdio.h> #include <string.h> int main() { char arr[] = "abcdef"; int len = strlen(arr); printf("%d\n", len);//6 return 0; } 现在我们模拟实现这个代码 #i

ygy555的博客 680

C语言 字符串 内存函数介绍 模拟实现strcpy strcmp strlen strcat strncpy strncmp strncat strstr strtok memcpy memmove

C语言 字符串 内存函数介绍 模拟实现strcpy strcmp strlen strcat strncpy strncmp strncat strstr strtok memcpy memmove

凡事都是靠练习 1045

字符串函数的模拟实现(strlen,strcapy,strcat,strstr,strcmp,memcpy,memmove))

字符串函数的模拟实现 1、strlen #include <stdio.h> #include <stdlib.h> //方式一:计数器方式 size_t my_strlen1(char *str) { size_t count = 0; while (*str != '\0') { count++; str++; } return count; } ...

gp1330782530的博客 435

模拟实现strstr,strcpy,strlen,strcat,strcmp,memcpy,memmove

1,模拟实现strstrstrstr为字符串查找函数,其原型为:char *strstr( const char *string, const char *strCharSet );这个函数就是在string中寻找是否含有子字符串strCharSet,寻找过程两个都不需要发生改变,所以将它们声明为const常量。返回值为char *这样可以方便链式访问。代码实现如下:#include #inclu

Stand__out的博客 533

【C语言进阶】-- 重点字符串函数内存函数及其模拟实现(strlen,strcmp,strcat...memcpy,memmove)

常用的字符串函数与内存操作函数,还有模拟实现,可以更深层的了解,看了这一篇会让写代码更方便,很干哦

Ljy_cx_21_4_3的博客 1349
上一篇: 深度剖析求一个数中的二进制位中的1的个数的多种方法
下一篇: 求第 N 个 斐波那契数的多种方法
dreamispossible
博客等级 码龄9年 265粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值