strlen函数

库函数strlen:strlen所作的是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符’\0’为止,然后返回计数器值(长度不包含’\0’)。

用法

char c[]=“strlen”;
int len = strlen©; //输出的是数组c的长度 6

strlen和sizeof的区别

strlen是一个C语言自带的一个库函数,而sizeof是取字节运算。这是它们本质的区别,在功能方面,strlen的功能是求出字符串的实际长度。而sizeof是计算当前的参数所占的空间大小。例如:
int arr[10];
int size=sizeof(arr);
此时求出的大小不是10,而是40,因为一个int占了4个字节,10个int就占了40个字节。所以求得的是40。

代码实现strlen函数

实现strlen的方法有很多,这里我列举两种简单易懂和常用的方法。

#include<stdio.h>
#include<assert.h>//模拟实现strlen函数  方法一
int My_strlen1(const char *cp)
{//只有当传进来的字符串不为NULL,函数才可以继续执行,否则执行报错,初学者可省略。assert(cp != NULL);  int len = 0;    //用来接收字符串的长度并返回while (*(cp++) != '\0') //只要当前的字符不等于\0,字符指针就往前移一位,进入while循环{                      len++;    //只要条件成立,记录字符长度。}/*                  这while循环和上面那个while循环是一样的,方便初学者看。while (*cp!= '\0'){len++;cp++;}*/return len;
}//方法二 递归
int My_strlen2(const char *cp)
{assert(cp != NULL);//当传进来的字符指针是空的,则返回0。结束此函数if (*cp == '\0')return 0;elsereturn 1+My_strlen2(cp + 1) ;   //当前面的if不成立时,说明当前判断的字符不是空,则+1,且将指针移向下一位并递归调用函数。
}int main()
{char *cp1 = "strlen fun";   //10char *cp2 = "hello world";   //11int len1=My_strlen1(cp1);int len2= My_strlen1(cp2);printf("result = %d\n", len1);printf("result = %d\n", len2);return 0;
}

解释都写在代码里了,如果有看不懂得可在评论区评论,会第一时间答复。

执行结果

strcpy函数

库函数strcat :把src所指向的字符串(包括“\0”)复制到dest所指向的字符串后面(删除dest原来末尾的“\0”)。要保证dest足够长,以容纳被复制进来的*src。*src中原有的字符不变。返回指向dest的指针。

用法

char dest[10] = “strcat”;
char src[10] = “fun”;
strcat(dest, src); //此时dest=strcatfun(无空格)

代码实现strcat函数
#define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<assert.h>
#include<string.h>char *My_strcat(char *dest, char *src)
{char *p = dest; //定义一个临时的指针来保存需要复制的字符串的首地址,有利于该函数被作为链式表达式while (*dest != '\0')  //该循环是使dest指向最后\0,方便下面复制src{dest++;}//该代码解释在第二个while循环while ((*dest++ = *src++) != '\0');/*while(*src!='\0')        只要src循环不到\0,都要将内容复制到dest{*dest = *src;dest++;         dest和src都向后移一位,进行下一个字符的复制src++;}*/return p; //返回dest的首地址}int main()
{char dest[20] = "strcat ";char *src = "fun";My_strcat(dest, src);printf("dest = %s\n", dest);return 0;
}
执行结果

strcpy函数

库函数strcpy :strcpy是一种C语言的标准库函数,strcpy把含有’\0’结束符的字符串复制到另一个地址空间,返回值的类型为char*。

用法

char des[10];
char *src = “strcpy”;
strcpy(des, src); //des=strcpy

代码实现

实现方法和实现strcat的方法几乎一样

#define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<assert.h>
#include<string.h>char *My_strcpy(char *des, const char *src)
{char *p = des; //用于保存des的首地址 链式表达式while ((*des++ = *src++) != '\0');return p; //返回des的首地址
}int main()
{char des[20];char *src = "strcpy fun";My_strcpy(des, src);printf("des = %s\n", des);return 0;
}
执行结果


谢谢大家观看,如有错误和不理解的地方可在下面评论区评论,会第一时间回复大家。

C语言 模拟实现 strlen strcat strcpy函数相关推荐

  1. 【C】模拟实现strlen,strcpy,strcat,strcmp,strncpy,syrcat,strnact,strncmp,strstr等字符串函数

    目录 字符串函数模拟实现 1.strlen模拟实现 2.strcpy模拟实现 3.strncpy模拟实现 4.strcat模拟实现 5.strncat模拟实现 6.strcmp模拟实现 7.strnc ...

  2. strlen ,strcmp,strcat,strcpy函数以及实现

    1.四种函数的简介与功能实现 2.四种函数的用C语言实现 第一节 四种函数的简介与功能实现 概述:四种函数作为库函数均存在于头文件<string.h>中,在程序编写时,我们可以通过头文件, ...

  3. C语言字符串库函数strlen、strcpy、strcat、strcmp、strstr使用详解及其实现

    写在前面:现在在刷简单题的时候,老是遇到字符串操作的题,用c语言自己实现很麻烦,其实c语言也有很多对字符串操作很方便的库函数.这个博客写来一是为了巩固自己一下自己学的知识,二也可以方便大家查询. 一. ...

  4. C语言模拟实现strlen

    strlen是用来测字符串长度的,使用时必须必须包含头文件string.h` 下面是他的原型 size_t strlen ( const char * str ); size_t代表他的返回值是个无符 ...

  5. 学习模拟实现strlen strcmp strcpy strcat strstr等库函数

    文章目录 前言 strlen 使用方法与注意事项 模拟实现 strcmp 使用方法与注意事项 模拟实现 strcpy 使用方法与注意事项 模拟实现 strcat 使用方法与注意事项 模拟实现 strs ...

  6. c语言模拟实现库函数strcat,【C语言】模拟实现库函数strcat函数

    CSS魔法堂:Reset CSS 下列样式规则可用于最小化各浏览器标签样式的不一致性.注意:实际使用时应该对其进行适当的调整,以适应项目要求. /* http://meyerweb.com/eric/ ...

  7. C语言——模拟实现字符串相关函数(strcpy、strlen)

    目录

  8. strlen和strcpy函数的三种实现

    1.计数器实现strlen函数的模拟 #include <stdio.h> #include <assert.h> int my_strlen(const char*str)/ ...

  9. C语言strlen等系列函数详细总结

    目录 一.strlen函数 二.C语言模拟实现strlen函数的3种方法 三.str系列函数 strcpy函数 strcat函数 strcat函数模拟实现 strcmp模拟实现 一.strlen函数 ...

最新文章

  1. windows版本下使用xdebug
  2. JSP第二次作业_6小题
  3. Windows 不能在 本地计算机 启动 SQL Server 。错误代码126.
  4. 拍拍信微服务网关实践分享
  5. CAP理论与分布式事务解决方案
  6. Ubuntu 14.04 为 root 帐号开启 SSH 登录
  7. 机器学习统计学相关书籍
  8. 内购订单进行二次处理_更学教育:卖家在投诉异常订单的流程是怎么样的?
  9. mysql5.1事件调度器
  10. 决定明智地放弃对名手旋风等象棋引擎的破解...
  11. excel将内容粘贴到筛选后的可见单元格
  12. 时序数据库TSDB逐日统计的Jave算法实现过程
  13. 三校生计算机教学计划,三校生高考英语教学计划
  14. qq邮箱收信服务器imap,普通IMAP、POP邮箱的设置 教你使用iPhone邮件客户端管理QQ邮箱...
  15. 特斯拉电池细节_为什么特斯拉电池日实际上可以辜负炒作
  16. 南理工计算机科学与工程学院,周俊龙 - 南京理工大学 - 计算机科学与工程学院...
  17. 射线与OBB相交检测
  18. 史上最全图详解Jvm—诊断工具和JVM监控
  19. html 表格,列表,表单,select和下拉选框,textarea多行文本域,label关联控件,表单,浮动框架,结构化标签
  20. css 横线中间的文字

热门文章

  1. android 拖动进度,Android 可拖动的seekbar自定义进度值
  2. 89c51,8255,6个led数码管显示时钟的汇编语言程序,汇编语言要求编写一个时钟程序 用八位数码管实现时分秒的计时功能...
  3. java 动态实例化对象_记录Java中如何动态实例化一个对象
  4. matlab画坐标系,Matlab绘制图形坐标轴操作汇总 | 望天博客
  5. xp系统怎样启动打印机服务器,WinXP系统如何开启Printspooler服务?
  6. php 获取子类的方法名,php获取分类下的所有子类方法
  7. php比较营业时间,使用php以人类可读格式从数据库表打印餐厅营业时间
  8. oracle mysql 数据类型对比_Oracle、SQL Server、MySQL数据类型对比
  9. Qt如何调用VS编写的动态链接库(dll文件)
  10. vue 自定义组件 v-model