这篇文章主要介绍了用C语言的strlen函数来实现读取字符串长度的过程,strlen所作的是一个计数器的工作,它从内存的某个位置开始扫描,直到碰到第一个字符串结束符\0为止
前言
读取字符串的长度,使用函数 strlen。这里我们写一个函数,来读取字符串的长度,本文内容主要包括:
- 使用strlen
- 使用指针:是常规的方法,但是要创建变量
- 指针改进:不需要创建变量,要求高,不易掌握
- 使用递归:不需要创建变量,要求高,不易掌握
- 介绍常量指针—— const char* str
1、函数strlen
int main()
{
char arr[] = "abcd";
int len = strlen(arr);
printf("%d\n", len);
return 0;
}
2、使用指针
字符串以字符 ‘\0’ 结尾,需要创建变量
int my_strlen(char* str)
{
int count = 0;//统计字符的个数,需要创建变量
while (*str != '\0')
{
count++;
str++;
}
return count;
}
int main()
{
char arr[] = "abcd";
//char* str = arr;
int len = my_strlen(arr);
printf("%d\n", len);
return 0;
}
3、指针改进
使用指针,不创建变量,不需要创建变量,面试题级别,要求高,不易掌握
int my_strlen(char* str)
{
char* p = str;//记录首元素地址的位置
while (*p != '\0')
{
p++;
}
return p - str;//尾地址-首地址,就是字符串的长度
}
4、使用递归
递归函数,不需要创建变量,以大化小,进行分解,面试题级别,要求高,不易掌握
my_strlen("abcdef")
1+my_strlen("bcdef")
1+1+my_strlen("cdef")
1+1+1+ my_strlen("def")
1+1+1+1+ my_strlen("ef")
1 + 1 + 1 + 1 +1+my_strlen("f")
1 + 1 + 1 + 1 + 1 + 1+ my_strlen("")
1 + 1 + 1 + 1 + 1 + 1 + 0 = 6
int my_strlen(char* str)
{//不需要创建变量
if (*str != '\0')
return 1 + my_strlen(str+1);//递归
else
return 0;
}
5、my_strlen函数的参数改进—常量指针
定义常量指针,const 对 *str 的内容进行限制,字符串的内容在传参时不会发生改变,将上面的自定义函数,都换成下面的代码:
int my_strlen(const char* str)//常量指针
{
}
总结
写一个函数,来读取字符串的长度,推荐掌握指针的写法。如果后面还有别的函数的写法,再进行更新。
到此这篇关于C语言strlen函数实现读取字符串长度详解的文章就介绍到这了,更多相关C语言 字符串长度内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:C语言strlen函数实现读取字符串长度详解


- Qt计时器使用方法详解 2023-05-30
- 我应该为我的项目使用相对包含路径,还是将包含目录放在包含路径上? 2022-10-30
- C语言qsort()函数的使用方法详解 2023-04-26
- 详解C语言中sizeof如何在自定义函数中正常工作 2023-04-09
- C语言手把手带你掌握带头双向循环链表 2023-04-03
- Easyx实现扫雷游戏 2023-02-06
- c++ const 成员函数,返回一个 const 指针.但是返回的指针是什么类型的 const? 2022-10-11
- C语言详解float类型在内存中的存储方式 2023-03-27
- C++ 数据结构超详细讲解顺序表 2023-03-25
- ubuntu下C/C++获取剩余内存 2023-09-18