首页 > 其他分享 >模拟实现库函数strlen

模拟实现库函数strlen

时间:2025-01-21 21:56:33浏览次数:3  
标签:arr return char str 库函数 strlen 模拟 size

strlen

统计字符串中‘\0’前面出现的字符个数(不包含‘\0’)

返回类型:size_t,其实就是unsigned int,即无符号整型

方法一:计数器

#include <stdio.h>
#include <assert.h>
size_t my_strlen(const char* str)
{
	size_t count = 0;
	assert(str);
	while (*str != '\0')
	{
		count++;
		str++;
	}
	return count;
}
int main()
{
	char arr[] = "abcdef";
	size_t n = my_strlen(arr);//传的是arr首字符的地址
	printf("%u\n", n);
	return 0;
}

方法二:指针减指针

#include <stdio.h>
#include <assert.h>

size_t my_strlen(const char* str)
{
	const char* p = str;
	assert(str);
	while (*p != '\0')
	{
		p++;
	}
	return p-str;
}
int main()
{
	char arr[] = "abc";
	size_t n = my_strlen(arr);
	printf("%u\n", n);
	return 0;
}

方法三:递归

#include <stdio.h>
#include <assert.h>

size_t my_strlen(const char* str)
{
	assert(str);
	if (*str == '\0')
	{
		return 0;
	}
	else
	{
		return 1 + my_strlen(str + 1);
	}
}
int main()
{
	char arr[] = "abcd";
	size_t n = my_strlen(arr);
	printf("%u\n", n);
	return 0;
}

标签:arr,return,char,str,库函数,strlen,模拟,size
From: https://blog.csdn.net/2301_80247375/article/details/145228937

相关文章

  • 【模拟电子技术】11-放大电路的性能指标
    【模拟电子技术】11-放大电路的性能指标通过输入,输出侧的各一个电容来到输入纯交流,输出纯交流Ui变化引起UBE变化,UBE变化引起IB变化,IB变化引起IC变化,IC变化引起UCE变化,UCE变化引起Uo变化关于输入,输出等效电路的问题:输入电阻Ri越大越好还是越小越好?当然是越大越好,因为我们想......
  • 【模拟电子技术】10-基本放大电路的构成
    【模拟电子技术】10-基本放大电路的构成交流骑在直流源上产生IB控制IC加上集电极反偏直流电压源后,满足工作在放大区的条件现在考虑如何输出我们用IB控制IC,得到的是电流,想得到电压信号,加电阻即可。但是如果直接在Uo两端接负载,那么输出的会有直流,体现不出交流,因此需要图中Rc......
  • 如何使用CSS3的属性设置模拟边框跟border效果一样?
    在CSS3中,除了使用标准的border属性来设置边框外,还可以使用其他属性或技巧来模拟边框效果。以下是一些常见的方法:使用box-shadow模拟边框:box-shadow属性可以用于在元素周围添加阴影效果,但也可以用来模拟边框。通过设置适当的水平和垂直偏移量(通常为0),以及模糊半径(也为0),你可......
  • 【模拟电子技术】07-BJT特性曲线共射
    【模拟电子技术】07-BJT特性曲线共射我们要用三极管,那么就必须考虑输入和输出,即考虑输入特性曲线和输出特性曲线UCE固定,考虑UBE和IB的关系,就相当于一个PN结了!考虑多个变量的关系时,我们往往固定其他变量,然后看其中两个变量的关系,然后两两拿出来观察。三极管有三种基本工作状......
  • #Python 用Sqlite3做模拟银行系统
    直接上干货:#引用各大库以及模块:fromsre_constantsimport_NamedIntConstantimporttkinterastkfromtkinterimportmessagebox,Toplevelimportsqlite3importdatetime#系统基本操作1-创建记忆储存:defcreate_account():  conn=sqlite3.connect('bank_......
  • 1.19 CW 模拟赛 T3. [NWRRC2015] Graph
    前言最后一道,补了跑路思路原来是贪心,那没救了首先考虑不加边的时候怎么处理显然我们可以用小根堆代替队列处理\(\rm{topo}\)序那么我们如何使得这个答案变大不难发现,我们只要对于当前堆顶加一条入度,就一定可以使得答案变大但是由谁来连这一条边呢?我们先不管,......
  • 1.19 CW 模拟赛 T2. Everybody Lost Somebody
    前言心态不好,多想想那我是不是要去学后缀数组?好的跑去学了一下()思路首先考虑\(\textrm{sa,height}\)数组的约束在此之前先给出一些定义\(\textrm{sa}\)数组存储排名为\(i\)的后缀在原序列上的位置\(\textrm{rank}\)数组存储原序列上的位置对应的排名\(\textr......
  • 模拟
    天梯赛使用OMS监考系统,需要将参赛队员安排到系统中的虚拟赛场里,并为每个赛场分配一位监考老师。每位监考老师需要联系自己赛场内队员对应的教练们,以便发放比赛账号。为了尽可能减少教练和监考的沟通负担,我们要求赛场的安排满足以下条件:每位监考老师负责的赛场里,队员人数不得超......
  • Powersim系统整体决策模拟工具-系统动力学
    Powersim系统整体决策模拟工具-系统动力学Powersim软件是由挪威PowersimSoftwareAS研发的一款高性能系统决策和分析软件,旨在通过构建复杂业务系统的系统动力学模型进行问题挖掘和获得基于数据和分析技术的商业洞见。Powersim和Vensim,Stella并列成为系统动力学仿真软件行业的......
  • 1.17 CW 模拟赛 T2. 艺术家
    前言更重要的是研究这题的部分分,赛时居然可以做到\(1\\rm{h}\)没有拿到任何一个特殊性质发现以前一直用的大标题很碍眼,改了,下课把之前的格式也改一下思路暴力容易模拟,做到\(25\%\)特殊性质\(\rm{A}\)思路你发现每一个区间都是其后面区间的前缀,而且每次长......