由于最近比较忙,导致好久没更新了。想我没?嘻嘻,不闹了,开始我们今天的小课堂吧!
什么,你想上课走神?小心二叔给你梳头哦!
那么这篇文章就先带大家去模拟一下strlen这个函数吧。
strlen这个函数想必大家一定不陌生,每次我们在求字符串的长度时,就会使用它,那么我来考考你,它的头文件是什么呢?嗯?你说你忘记了?害,那我帮你复习一下吧,strlen头文件:#include<string.h>
那么你可有思考过strlen这个函数平时是如何运行的呢?接下来我就给你讲讲它是如何工作的。
目标:从输入字符串的第一个字符开始count+1,当遇到'\0'时就会count停止+1。
思路:那么如何到达'\0'呢,很明显是循环吧,所以我们的“循环三剑客”就可以准备准备挑选了,那么我们再来思考一下它的循环条件是什么呢?注意目标里的遇到'\0'就会停止+1,说明条件就是只要!='\0'即可进入循环。
好了万事具备只欠循环种类了,那么这里用哪一种循环好呢?
我先帮大家梳理一下“循环三剑客”的模板
while循环:
while(条件)
{
语句;
调整部分;
}
for循环:
for(初始化部分;条件;调整部分)
{
语句;
}
do while循环:
do{
语句;
调整部分;
}while(条件);
很明显,while会被我们首选吧,首先,在平时我们用它的次数会比较多,也会比do while更熟悉,也许会有人问for循环不行吗?嘿,还真不行,你品你细品,我们现在就是在模拟strlen求字符串的长度,因此for循环的条件部分就不好写(本来就是要求长度,你咋还用上了呢?)当然“循环三剑客”中并不是只有while能在这里派上用场的,不信?请看代码二。
代码1:
int my_strlen(char* dest)
{
int count = 0;//字符计数器
assert(dest);//防止该指针成为NULL
while (*dest != '\0')
{
count++;
dest++;
}
return count;
}
int main()
{
char arr1[] = "abcdefg";
int ret=my_strlen(arr1);//模拟实现的函数
printf("%d", ret);
return 0;
}
代码2:
int my_strlen(char* dest)
{
int count = 0;//字符计数器
assert(dest);//防止该指针成为NULL
do {
count++;
dest++;
} while (*dest != '\0');
return count;
}
int main()
{
char arr1[] = "abcdefg";
int ret = my_strlen(arr1);//模拟实现的函数
printf("%d", ret);
return 0;
}
那么今天的讲课到这里就结束了
给大家总结一下吧
敲重点:“循环三剑客”模板
strlen头文件:string.h
assert的作用:防止指针成为null和头文件:assert.h
下节课会有惊喜,一定要来听哦