(C语言)strlen函数模拟实现(三种方法)

目录

1. strlrn函数

2. 注意事项:

3. 计数器法

4. 指针减指针方法:

5. 递归方法:


1. strlrn函数

头文件<string.h>

实现函数模拟须知:
字符串以 '\0' 作为结束标志
,strlen函数返回的是在字符串中 '\0' 前⾯出现的字符个数(不包含 '\0' )。
参数指向的字符串必须要以 '\0' 结束。
注意函数的返回值为size_t,是⽆符号的( 易错 )

2. 注意事项:

1. size_t类型为unsigned int类型,因为字符串长度一定为正所以肯定是是无符号类型。当然int类型也可以,只是size_t更符合原函数。
2. 使用指针时最好assert断言一下避免将NULL地址解引用,保证函数的完备性
3. 用const来修饰形参,因为my_strlen函数是用来计算字符串大小的,不允许更改字符串中的内容,因此加上const确保函数内部不会误改原字符串。

3. 计数器法

#include <assert.h>
size_t my_strlen(const char* p)
{assert(p != NULL);int count = 0;while (*p){count++;p++;}return count;
}

4. 指针减指针方法:

#include <assert.h>size_t my_strlen(const char* p)
{assert(p != NULL);char* p1 = p;while (*p){p++;}return p - p1;
}

5. 递归方法:

#include <assert.h>size_t my_strlen(const char* p)
{assert(p != '\0');if (*p == '\0'){return 0;}else{return 1 + my_strlen(++p);}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日一题 第一期 洛谷 铺地毯

[NOIP2011 提高组] 铺地毯 https://www.luogu.com.cn/problem/P1003 题目描述 为了准备一个独特的颁奖典礼&#xff0c;组织者在会场的一片矩形区域&#xff08;可看做是平面直角坐标系的第一象限&#xff09;铺上一些矩形地毯。一共有 n n n 张地毯&#xff0c;编号从 1 …

这么可爱的小坤,那个电子爱好者能顶得住呀?

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、鸡你太美简介二、程序实现效果图三、如何实现总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 仅供娱乐、仅供娱乐、仅供娱乐&…

a-table:实现跨域多选功能——基础积累

table组件跨页多选功能&#xff1a; html部分的代码&#xff1a; <a-tablesize"small"style"margin-top: 10px"rowKey"id":columns"columns":dataSource"dataSource":pagination"pagination":loading"l…

能发顶会!GNN结合LLMs的三大创新思路!新SOTA准确率提升10倍

LLMs在处理NLP任务方面表现出色&#xff0c;而GNNs在挖掘和分析复杂关系数据&#xff08;图数据&#xff09;方面展现出其卓越的能力。这种趋势催生了将这两种技术整合的研究兴趣&#xff0c;为解决更多领域的实际问题。GNN结合LLMs也逐渐成为了研究的热点。 GNNLLMs可以发挥二…

【SQL Server安装绊脚石】排除报错的终极指南

&#x1f6a9;本文介绍 ​ 在迈向数据库管理系统的世界时&#xff0c;SQL server的安装过程往往是我们踌躇的绊脚石。一不小心&#xff0c;就可能陷入各种报错的困境中。然而&#xff0c;正是这些挑战&#xff0c;让我们更加升入地了解SQL server地安装与配置&#xff0c;也让…

【Redis学习_介绍与安装】

Redis学习_介绍与安装 Redis学习_介绍与安装Redis介绍Redis安装命令介绍问题集 Redis学习_介绍与安装 Redis介绍 Redis 是一种开源的高性能、非关系型、基于键值对的数据存储系统&#xff0c;也被称为数据结构服务器。Redis 数据库支持多种数据结构&#xff0c;如字符串&…

展会邀约 | 加速科技将携重磅产品亮相SEMICON China 2024

SEMICON China 2024将于3月20日-3月22日在上海新国际博览中心隆重举行。展会期间&#xff0c;加速科技将携重磅产品高性能数模混合信号测试机ST2500EX、LCD Driver测试机Flex10K-L、高密度数模混合信号测试系统ST2500E、高性能数模混合信号测试系统ST2500A亮相此次行业盛会&…

打破信息获取的界限:灵雀云推出自主研发智能文档机器人KnowledGenie

自LLM&#xff08;Large Language Model&#xff09;技术的迅速崭露头角以来&#xff0c;整个AI领域已经发生了翻天覆地的变化。LLM技术的不断进步&#xff0c;特别是以ChatGPT为代表的技术&#xff0c;为人工智能领域带来了前所未有的发展机遇。这种技术的出现&#xff0c;使得…

掌握这些技巧,打造高效的考试培训系统

掌握一些有效的技巧&#xff0c;可以帮助我们打造一个高效的考试培训系统。考试培训对于学生来说非常重要&#xff0c;它可以帮助他们提高分数&#xff0c;并增强他们的学习能力。 一个高效的考试培训系统应该提供多种学习方式。每个学生的学习风格都不同&#xff0c;因此应该提…

工作中常用的git命令

git 分布式版本控制系统。 使用远程仓库时候会有多个协议可以选择&#xff0c;使用https不仅仅速度慢&#xff0c;而且每次push都要输入口令。 HEAD 当前版本的指针&#xff0c;当切换本地版本的时候会快速指向指定版本文件 master git为我们创建主分支 origin 远程仓库的名…

位图、布隆过滤器

普通的哈希表增删查改的效率的确达到了令人满意的O&#xff08;1&#xff09;&#xff0c;但是本质还是以空间换时间来实现的。并且哈希表中是直接存储数据的&#xff0c;应对一些海量数据处理的问题可能就会造成空间不足的问题。 加入现有40亿个无符号整形数字&#xff0c;设…

理论学习 BatchNorm2d

import torch import torch.nn as nn# With Learnable Parameters m nn.BatchNorm2d(100) # Without Learnable Parameters m nn.BatchNorm2d(100, affineFalse) input torch.randn(20, 100, 35, 45) output m(input)print(output) print(output.shape)这段代码展示了如何使…