strlen函数的简单运用与模拟实现 strlen函数的简单使用strlen函数的三种模拟实现使用临时变量的方法使用函数递归的方法使用指针相减的方法

strlen函数的简单使用

strlen函数是用来计算字符串长度的一个函数,返回类型是size_t

#include

#include

int main()

{

char arr[] = "hello world";

size_t;//返回值是size_t unsigned int

int len = strlen(arr);

printf("len=%d\n", len);

return 0;

}

下面就是对于返回值类型是size_t的一个很形象的例子

int main()

{

const char* p1 = "abc";

const char* p2 = "adbcdef";

if (strlen(p1) - strlen(p2) > 0)

//因为返回值是无符号数,所以没有负数

{

printf("hehe");

}

else

{

printf("haha");

}

return 0;

}

strlen函数的三种模拟实现

使用临时变量的方法

#include

#include

//模拟实现strlen

size_t my_strlen(const char* str)

{

int count = 0;//计数器

assert(str != NULL);

//断言不是空指针,如果没有这步,当是空指针的时候可能会崩溃

while (*str != '\0')

{

count++;

str++;

}

return count;

}

int main()

{

char arr[] = "hello";

int len = my_strlen(arr);

printf("%d\n", len);

return 0;

}

使用函数递归的方法

#include

#include

//不使用临时变量

size_t my_strlen(const char* str)

{

assert(str != NULL);

if (*str != '\0')

{

return 1 + my_strlen(str + 1);

}

else

{

return 0;

}

}

int main()

{

char arr[] = "hello";

int len = my_strlen(arr);

printf("%d\n", len);

return 0;

}

使用指针相减的方法

//指针相减的做法

size_t my_strlen(const char* str)

{

assert(str != NULL);

const char* start = str;

//str 不能初始化char类型,所以用const

while (*str != '\0')

{

str++;

}

return str - start;

}

int main()

{

char arr[] = "hello";

int len = my_strlen(arr);

printf("%d\n", len);

return 0;

}

到此这篇关于strlen函数的使用与模拟实现strlen的文章就介绍到这了,更多相关strlen函数模拟实现strlen内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

java中strlen,浅析C++中strlen函数的使用与模拟实现strlen的方法相关推荐

  1. strlen函数的用法及模拟实现strlen函数的两种方法

    strlen函数的用法及模拟实现strlen函数的两种方法 一.strlen函数的用法 strlen的简单应用 二.指针模拟实现strlen函数 三.递归模拟实现strlen函数 一.strlen函数 ...

  2. 计算机网络中路由器,浅析计算机网络中的路由器

    浅析计算机网络中的路由器 通过路由器的结构 ,分析了路由器的基本原理及功能 ,进而 (本文共2页) 阅读全文>> 由于路由器的应用越来越广泛,所以对网络路由器在使用过程中发生的故障,我们也 ...

  3. 中getname_浅析JS中的class

    前言 在 ES6 规范中,引入了 class 的概念.使得 JS 开发者终于告别了,直接使用原型对象模仿面向对象中的类和类继承时代. 但是JS 中并没有一个真正的 class 原始类型, class ...

  4. Java编程:浅析泛型类型中的桥接方法

    一.什么是桥接方法 在介绍桥接方法之前,我先介绍下泛型.在 JDK1.5 中引入了泛型,泛型类型是基于原始类型.类型擦除原理进行实现的. 原始类型 Java总是会自动的为泛型类型提供一个相应的原始类型 ...

  5. 将python中的小数直接进位的函数_python保留小数位的三种实现方法

    python保留小数位的三种实现方法 前言 保留小数位是我们经常会碰到的问题,尤其是刷题过程中.那么在python中保留小数位的方法也非常多,但是笔者的原则就是什么简单用什么,因此这里介绍几种比较简单 ...

  6. 【java】浅析JDK中ServiceLoader的源码

    1.概述 转载:浅析JDK中ServiceLoader的源码 上一篇文章:深入探讨 Java 类加载器 2.ServiceLoader的使用 这里先列举一个经典的例子,MySQL的Java驱动就是通过 ...

  7. 浅析 JavaScript 中的 函数 uncurrying 反柯里化

    柯里化 柯里化又称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,这中间可嵌套多层这样的接受部分参数函数,直至返回最后结果. 因此柯里化的过程是 ...

  8. 有一个包含主函数的java类_重新认识Java中的程序入口即主函数各组成部分

    主函数的定义: public:代表着该函数访问权限是最大的 static:代表主函数随着类的加载就已经存在了 void:主函数没有具体的返回值 main:不是关键字,但是一个特殊的单词,能够被JVM识 ...

  9. java convert函数_自己实现 java中 Convert.toDouble(String str)处理函数 | 学步园

    今天在superWaba上看到Convert.toDouble(String str),由于底层问题比较大的数就出错,现在自己写了一个 程序中info()是我加的打印,可以去掉 java中 Conve ...

  10. Java中classLoader浅析

    转载自  Java中classLoader浅析 本文为在公司内部TD上写的一篇小文, 主要讲解java中classLoader基础知识, 现在拿来这里分享一下. 一.问题 请在Eclipse中新建如下 ...

最新文章

  1. Linux思维导图之shell脚本编程基础、习题
  2. 6、删除视图(DORP VIEW)
  3. 10款优秀的跨平台免费生产力软件[转]
  4. 【洛谷P5114】八月脸【边分治】【闵可夫斯基和】
  5. php20个字,北京人会说不会写的20个字,第一个我就跪了
  6. 草稿 datagridview的显示与修改
  7. 如何实现一平台多系统_自动化设备数据采集系统如何实现
  8. 购房者一次性付清和还贷三十年,差别有多大?
  9. java day43【Filter:过滤器 、Listener:监听器】
  10. Python2笨方法学习Python--习题二:注释和井号
  11. chrome frame 在 iframe frameset 下无效 的处理方法
  12. C语言入门练习— —累乘
  13. SAP MM-MB52 物料库存查询简单操作
  14. 欧姆龙PLC-小型PLC概述
  15. 结构方程模型自由度和卡方值为0(零)怎么办?
  16. AE/PR插件AI智能背景抠像颜色键控GoodbyeGreenscreenzxb V1.6.0官方版
  17. CentOS7 CPU降频
  18. 用JavaScript判断一个数是否是素数
  19. SSM 小demo(很详细,适合新手)
  20. Hu距(Hu Moments)图像距介绍

热门文章

  1. 麦吉尔大学的数学与计算机科学,麦吉尔大学数学与计算机科学本科.pdf
  2. GVIDO MUSIC向德意志唱片公司成立120周年 Special Gala Concert Presented by 小泽征尔 斋藤纪念管弦乐团提供赞助
  3. 惠普触控板使用指南_惠普笔记本触摸鼠标怎么设置
  4. starbound服务器无响应,星界边境无法开始游戏解决方法
  5. endless walk
  6. 地图学:专题地图制作详细步骤
  7. 码无止境(1)——一个科研项目立项时的小程序(字典嵌套列表)
  8. i排版html居中,i排版-i排版官网:微信公众号文章编辑软件-禾坡网
  9. MCS-51系列单片机硬件结构
  10. 程序员之间的幽默段子,句句都是经典