码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【C语言库函数模拟实现 】# Strlen()


    🥵Strlen()

    🥵Strlen() - 正确使用

    🥵三种strlen库函数模拟实现方式

    1、Strlen() - 使用count计数法

    2、Strlen() - 使用指针减法的方式实现

    3、Strlen() - 使用递归的方式实现


                                               

    🥵Strlen()

            求字符串长度。

    语法:

    size_t strlen ( const char * str );

    头文件           :#include

    函数返回值    :size_t  类型。

    函数参数        :const char* 类型。

    解释               :返回C字符串str的长度。C字符串的长度是由结束空字符决定的:一个C字符串的长度是字符串开始和结束空字符之间的字符数(不包括结束空字符本身)。

    🥵Strlen() - 正确使用

    🥵三种strlen库函数模拟实现方式

    1、Strlen() - 使用count计数法

    1. #include
    2. int MyStrlen(char* arr)
    3. {
    4. int count = 0;
    5. while (*arr != '\0')
    6. {
    7. arr++; // 指针指向的字符不是'\0'那就让指针加1,计数count+1;
    8. count++;
    9. }
    10. return count;
    11. }
    12. int main()
    13. {
    14. char arr[] = "abcdefr";
    15. // 调用模拟实现MyStrlen()函数。
    16. int result = MyStrlen(arr);
    17. printf("该字符串的长度为 %d\n",result);
    18. return 0;
    19. }

    2、Strlen() - 使用指针减法的方式实现

    1. #include
    2. int MyStrlen(const char* arr)
    3. {
    4. // 创建一个临时变量,对arr的初始指针位置进行记忆。
    5. const char* tmp = arr;
    6. while (*arr != '\0')
    7. {
    8. arr++;
    9. }
    10. // 返回值为:当前指针位置 - 初始指针位置
    11. return (int)(arr - tmp);
    12. }
    13. int main()
    14. {
    15. char arr[] = "asdasdsad";
    16. // 调用模拟实现MyStrlen()函数。
    17. int result = MyStrlen(arr);
    18. printf("该字符串的长度为 %d\n", result);
    19. return 0;
    20. }

    3、Strlen() - 使用递归的方式实现

    1. #include
    2. int MyStrlen(const char* arr)
    3. {
    4. // 递归结束条件。
    5. if (*arr == '\0')
    6. return 0;
    7. else // 递归重复调用此函数。
    8. return 1 + MyStrlen(arr + 1);
    9. }
    10. int main()
    11. {
    12. char arr[] = "asdasdsad";
    13. // 调用模拟实现MyStrlen()函数。
    14. int result = MyStrlen(arr);
    15. printf("该字符串的长度为 %d\n", result);
    16. return 0;
    17. }

            以上我我总结的三种C语言库函数strlen()的模拟实现方式,每个人写代码的方式不一样,学习过的书写strlen()函数的写法也不一样,仅限参考,不喜勿喷哦!

          

  • 相关阅读:
    前置过滤器安错了,是过滤不了水里的虫卵的
    java集合之迭代器遍历元素
    零拷贝、MMAP、堆外内存
    Ubuntu LTS 坚持 10 年更新不动摇
    实战:给docusaurus文档网站配置Algolia 实现全站内容搜索功能-2023.11.16(已解决)
    R语言统计分析:置换检验
    【ARM Coresight Debug 系列 17 -- ARM Debug Vector Catch 详细介绍】
    数据挖掘技术-绘制直方图
    无重复字符的最长子串(python3)
    UI自动化---Wechat批量表情包轰炸
  • 原文地址:https://blog.csdn.net/lx473774000/article/details/126007160
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号