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

那么我们就来尝试一下自己动手写一个strlen函数。

方法一:

#include <stdio.h>
#include <assert.h>int my_strlen(const char* s)
{char* p = s;assert(p != NULL);//断言,确保指针的有效性int count = 0;while (*p != '\0'){count++;p++;}return count;
}
int main()
{char str[] = "abcdefg";int len = my_strlen(str);printf("%d\n", len);return 0;
}

运行结果:

方法二:
使用递归来编写strlen函数。

#include <stdio.h>int my_strlen(const char* s)
{char* p = s;if (*p == '\0')return 0;return 1 + my_strlen(p + 1);
}
int main()
{char str[] = "abcdefg";int len = my_strlen(str);printf("%d\n", len);return 0;
}

运行结果:

方法三:
因为 指针 - 指针 = 数组大小,
所以我们也可以这样写strlen函数。

#include <stdio.h>
#include <assert.h>int my_strlen(const char* s)
{char* p = s;assert(p != NULL);//断言,保证指针的有效性char* start = p;char* end = p;while (*end != '\0'){end++;}return end - start;
}
int main()
{char str[] = "abcdefg";int len = my_strlen(str);printf("%d\n", len);return 0;
}

运行结果:

自己动手写一个strlen()函数相关推荐

  1. 自己写一个pow()函数

    问题:请自己动手写一个pow()函数.   我们在学习C语言的时候,可能已经接触过pow()函数,它是C语言标准库函数中自带的一个函数,使用的时候只需包含<math.h>就可以了,不需要你 ...

  2. 自己动手写一个简单的bootloader

    自己动手写一个简单的bootloader 15年10月31日19:44:27 (一) start.S 写这一段代码前,先要清楚bootloader开始的时候都做什么了.无非就是硬件的初始化,我们想要写 ...

  3. 自己动手写一个 strace

    这次主要分享一下一个动手的东西,就是自己动手写一个 strace 工具. 用过 strace 的同学都知道,strace 是用来跟踪进程调用的 系统调用,还可以统计进程对 系统调用 的统计等.stra ...

  4. 编写一个C程序,实现以下功能:用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为:int strcmp(char *p1,char *p2);设p1指向字符串s

    题目描述: 编写一个C程序,实现以下功能: 用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为: int strcmp(char *p1,char *p2); 设p1指向字符串s ...

  5. 自己动手写一个推荐系统,推荐系统小结,推荐系统:总体介绍、推荐算法、性能比较, 漫谈“推荐系统”, 浅谈矩阵分解在推荐系统中的应用...

    自己动手写一个推荐系统 废话: 最近朋友在学习推荐系统相关,说是实现完整的推荐系统,于是我们三不之一会有一些讨论和推导,想想索性整理出来. 在文中主要以工程中做推荐系统的流程着手,穿插一些经验之谈,并 ...

  6. 动手写一个Caffe层:矩阵相乘Matmul

    动手写一个Caffe层:矩阵相乘Matmul 背景 实现 前向传播实现 后向传播实现 backward推导 小结 背景 最近在研究chainer网络的caffe实现,顺便也体验一下caffe.对于ca ...

  7. 自己动手写一个印钞机 第一章

    2019独角兽企业重金招聘Python工程师标准>>> 作者:阿布? 未经本人允许禁止转载 ipython notebook git版本 目录章节地址: 自己动手写一个印钞机 第一章 ...

  8. 写一个rtrim()函数消除字符串后面的空格字符。编main函数调用测试它。

    写一个rtrim()函数消除字符串后面的空格字符.编main函数调用测试它. **提示信息:"请输入一个字符串:" **输出格式要求:"去掉右边的空格后为%s!\n&qu ...

  9. 自己动手写一个仿Docker虚拟容器

    自己动手写一个仿Docker虚拟容器 本项目参照书籍<自己动手写Docker> 作者:陈显鹭(花名:遥鹭)-阿里云高级研发工程师等 项目地址:https://gitee.com/Sheng ...

最新文章

  1. CloudStats :一款SaaS 服务器监控工具
  2. Vsftpd 服务的部署及优化
  3. 关于嵌套循环的循环初始化语句问题:
  4. 【Servlet】Request/Response/Cookie/Session中常用方法
  5. assert函数_PHP 之 assert()函数
  6. beego 例子_beego框架代码分析
  7. 厦门大学数学专业考研试题参考解答
  8. 上古卷轴 java_上古卷轴II-双帝传奇
  9. read fread open fopen write fwrite
  10. 【MATLAB】通信信号调制通用函数 — 带通滤波器
  11. 裤子尺码对照表eur40_有了裤子尺码对照表,再也不用担心买错裤子了
  12. jQuery 遍历 - find() 方法
  13. matlab 三维图像 叠加,利用 Matlab构建“波的叠加”图样
  14. fabio docker
  15. 国外android 邮件工具,对比测评国内外四个邮箱APP 邮箱大师表现最全能
  16. 低代码助力生产管理:离散型制造业MES系统
  17. 红点奖设计概念奖设计之星奖
  18. 时间轮盘app(抖音数字时钟罗盘)v1.4 安卓版
  19. 通信端口感叹号_解决通用串行总线控制器总是有感叹号的办法
  20. 领域建模的思想和方法

热门文章

  1. 贾志刚-OpenCV下的图片读取,摄像头调用
  2. Android procrank 使用以及原理
  3. 你学会UI设计了吗?
  4. java如何记录方法运行时间?
  5. 实验7.7 集成触发器及应用
  6. Windows 安装 Brave Browser
  7. 提权学习:第三方软件提权(Server-u 提权)43958
  8. mysql 1205错误
  9. 2021-09-29 pta习题及知识点总结(3)
  10. Node.js模块化开发