【C/C++】模拟实现strlen

news2024/11/24 5:35:09

学习目标:

  • 使用代码模拟实现strlen

逻辑:

  • strlen 需要输入一个字符串数组类型的变量,并且返回一个整型类型的数据。
  • strlen 需要计算字符串数组有多少个元素。

代码1:使用计数器

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

int strlen_mine(char * pc)
{
	int count = 0;
	for (int i = 0; pc[i] != '\0'; i++)
	{
		count++;
	}
	return count;
}

int main()

{
	char str[6] = "ALICE";
	int ret = strlen_mine(str);
	printf("%d", ret);
	return 0;
}


 代码2:使用递归

int strlen_mine2(char* pc)
{
	if (*pc == '\0')
	{
		return 0;
	}
	else
	{
		return (strlen_mine2(pc + 1) + 1);
	}
}

int main()

{
	char str[6] = "ALICE";
	int ret = strlen_mine2(str);
	printf("%d", ret);
	return 0;
}


 代码3:使用指针 - 指针

int strlen_mine3(char* pc)
{
	assert(pc);
	char* p = pc;
	while(*p != '\0')
	{
		p++;
	}
	return (p - pc);
}

int main()

{
	char str[6] = "ALICE";
	int ret = strlen_mine3(str);
	printf("%d", ret);
	return 0;
}

        这里一共提供了三种思路供大家参考。


相关链接:

        【C/C++】函数的递归-CSDN博客

         C语言指针的介绍-CSDN博客


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2229091.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java面试经典 150 题.P55. 跳跃游戏(009)

本题来自&#xff1a;力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解&#xff1a; class Solution {public boolean canJump(int[] nums) {int…

梁山派入门指南2——滴答定时器位带操作按键输入

梁山派入门指南2——滴答定时器&位带操作&按键输入 1. 滴答定时器1.1 滴答定时器简介1.2 相关寄存器1.3 固件库函数 2. 位带操作2.1 位带操作介绍2.2 位带操作的优势2.3 支持位带操作的内存地址2.4 位带别名区地址的计算方式2.5 位带操作使用示例 3 按键输入3.1 独立按…

RHCE--4

第四章 web服务器 web服务器简介 www可以结合文字、图形、影像以及声音等多媒体&#xff0c;并通过可以让鼠标单击超链接的方式将信息以Internet传递到世界各处去。 www所用的协议&#xff1a;Hyper Text Transport Protocol&#xff0c;HTTP&#xff0c;超文本传输协议。 ww…

C++ | Leetcode C++题解之第515题在每个树行中找最大值

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> largestValues(TreeNode* root) {if (!root) {return {};}vector<int> res;queue<TreeNode*> q;q.push(root);while (!q.empty()) {int len q.size();int maxVal INT_MIN;while (…

如何安装和使用PowerDesigner

教程目录 一、安装二、使用 一、安装 1、启动安装程序。 2、Trial&#xff0c;然后Next。 3、选PRC&#xff0c;同意协议&#xff0c;Next。 4、设置安装路径&#xff0c;Next。 5、Next。 6、全选&#xff0c;Next。 7、Next。 8、Next。 9、等待安装。 10、…

人工智能生产力悖论:为什么大多数人没用上AI工具?

真正的障碍不是技术&#xff0c;而是思考的时间: 虽然像ChatGPT这样的工具确实有潜力带来变革&#xff0c;但我接触的大多数人几乎不用它。就算用的&#xff0c;也只是用来做些总结之类的小活儿。而在这些用户里&#xff0c;只有大约5%的人订阅了高级版&#xff0c;这意味着真…

JS中DOM和BOM

DOM DOM&#xff08;文档对象模型&#xff09;是一个跨平台和语言独立的接口&#xff0c;它允许程序和脚本动态地访问和更新文档的内容、结构和样式。在网页浏览器中&#xff0c;DOM 通常表示 HTML 或 XML 文档的对象模型。DOM 将网页内容视为节点树&#xff0c;其中每个节点都…

C语言初阶:十一.代码调试技巧

❤欢迎各位大佬访问&#xff1a;折枝寄北-CSDN博客折枝寄北擅长C语言初阶,等方面的知识,折枝寄北关注python,c,java,qt,c语言领域.https://blog.csdn.net/2303_80170533?typeblog❤文章所属专栏https://blog.csdn.net/2303_80170533/category_12794764.html?spm1001.2014.300…

Linux265资源分享网——Linux命令大全在线网址

Linux命令大全在线网址 https://linux265.com/

Chrome浏览器控制台替换接口返回内容

1.打开Chrome DevTools&#xff1a; 使用快捷键F12或右键点击页面并选择“检查”来打开Chrome DevTools。 2.导航到Network面板&#xff1a; 在DevTools的顶部菜单中&#xff0c;选择“Network”&#xff08;网络&#xff09;面板以监视网络请求。 3.发起目标请求&#xff1a; …

HarmonyOS开发5.0 net 启动界面设置

第一步、创建我们界面 第二步&#xff0c; 在EntryAbility中配置启动页面&#xff0c;在entry/src/main/ets/entryability/EntryAbility.ets中配置启动页面 配置如下 至此大功告成

ssm012医院住院管理系统(论文+源码)_kaic

摘 要 随着时代的发展&#xff0c;医疗设备愈来愈完善&#xff0c;医院也变成人们生活中必不可少的场所。如今&#xff0c;已经2021年了&#xff0c;虽然医院的数量和设备愈加完善&#xff0c;但是老龄人口也越来越多。在如此大的人口压力下&#xff0c;医院住院就变成了一个问…

UML图之对象图详解

~犬&#x1f4f0;余~ “我欲贱而贵&#xff0c;愚而智&#xff0c;贫而富&#xff0c;可乎&#xff1f; 曰&#xff1a;其唯学乎” 零、什么是对象图 对象图&#xff08;Object Diagram&#xff09;是UML中一种重要的静态结构图&#xff0c;它用于表示在特定时间点上系统中的对…

STM32之外部中断(实验对射式传感器计次实验)

外部中断配置 #include "stm32f10x.h" // Device headeruint16_t CountSensor_Count;void CountSensor_Init(void) {//RCC--> GPIO--> AFIO--> EXTI--> NVIC五步RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //开启GPIOB时…

MFC的SendMessage与PostMessage的区别

一、SendMessage 同步操作&#xff1a; SendMessage 是一个同步函数&#xff0c;它会将消息发送到指定的窗口&#xff0c;并等待该窗口的消息处理过程完成&#xff0c;然后返回。这意味着它会阻塞当前线程&#xff0c;直到消息处理完成。 直接调用&#xff1a; SendMessage 会…

update-alternatives(选择工具)

0 Preface/foreword 1 update-alternatives介绍 1.1 选项和用法 1.2 install用法 update-alternatives --install <link> <name> <path> <priority> [--slave <link> <name> <path>] link&#xff1a;符号链接&#xff08;软链…

PostgreSQL(WINDOWS)下载、安装、简单使用

下载 PostgreSQL: Downloads PostgreSQL: Windows installers EDB: Open-Source, Enterprise Postgres Database Management 安装 注意密码要方便自己使用&#xff0c;不能忘记。 打开pgAdmin&#xff0c;输入密码 新建数据库 打开命令工具 新建表

疯狂讲义———第3章 数据类型与运算符

目录 一.注释的重要性 1.注释 2.Java语言的注释类型 3.文档注释 二.javadoc命令的用法 三.数据类型的两大类 四.8种基本类型及各自的注意点 1.整型 2.字符型 3.浮点型 4.布尔型 五.自动类型转换和强制类型转换 六.表达式类型的自动提升 七.Java提供的基本运算符 八.运算符的结…

【算法】递归系列:206.反转链表(两种递归实现)

目录 1、题目链接 2、题目介绍 3、解法 递归法&#xff08;从前往后递归&#xff09; 从后往前递归 4、代码 递归法&#xff08;从前往后递归&#xff09; 从后往前递归 1、题目链接 206.反转链表 2、题目介绍 3、解法 递归法&#xff08;从前往后递归&#xff09; 递归…

编程之路:蓝桥杯备赛指南

文章目录 一、蓝桥杯的起源与发展二、比赛的目的与意义三、比赛内容与形式四、比赛前的准备五、获奖与激励六、蓝桥杯的影响力七、蓝桥杯比赛注意事项详解使用Dev-C的注意事项 一、蓝桥杯的起源与发展 蓝桥杯全国软件和信息技术专业人才大赛&#xff0c;简称蓝桥杯&#xff0c…