一起养成写作习惯!这是我参与「掘金日新计划 · 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
最后
这道题目相较于前面的递归是稍稍的难上了那么点,但是其实多去调试你会发现本质还是一样的。