【C语言】题目35 - 模拟实现字符串函数打印长度,用递归的形式,不能创建临时变量。

265 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第16天,点击查看活动详情

🚀write in front🚀

🔎大家好,我是泽奀,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩
💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🖊

前言

Hello,各位小伙伴们大家好,一题不见甚是想念。今天就来带大家开始刷C语言的第三十五题~,一起来刷题吧(o゚v゚)ノ

题目描述

模拟实现字符串函数打印长度,用递归的形式,不能创建临时变量。

题目分析

​题目内容:模拟实现字符串函数打印长度,用递归的形式,不能创建临时变量。

在做这道题的时候我们先讲解下什么是递归↓

【C语言】卍字通晓函数及递归 - 掘金 (juejin.cn)

相信你看了这篇文章就知道什么是递归了(●'◡'●)

strlen() 函数的声明方式如下↓

size_t strlen ( const char * str );

获取字符串长度。

返回 C 字符串 str 的长度。

str 要计算长度的字符串。

字符串的'\0'作为结束标志,strlen函数的返回值是在字符串中出现的字符个数(不包含'\0')

注意:函数的返回值是无符号的 unsigned 容易出错の。

Size_t→是一个无符号(unisgned int)整型类型。

题目代码

#define _CRT_SECURE_NO_WARNINGS 1
#include<string.h>
#include<stdio.h>
#include<assert.h>
int my_strlen(char *str)
{
	assert(str != NULL);
	if (*str != '\0')
		return 1 + my_strlen(1 + str);
	else
		return 0;
}
int main(void)
{
	char str[20] = { 0 };
	puts("请输入字符:");
	scanf("%s", &str);
	int ret = my_strlen(str);
	printf("ret = %d\n", ret);
	return 0;
}

运行结果

可能输入字符:HelloC

ret = 6

最后

这道题目相较于前面的递归是稍稍的难上了那么点,但是其实多去调试你会发现本质还是一样的。