C和指针之实现strlen函数
来源:互联网 发布:菜鸟网络上市 编辑:程序博客网 时间:2024/05/17 01:30
1、问题
求字符串长度,实现strlen函数。
2、代码实现
#include <stdio.h>#include <assert.h>int get_strlen(char *str){ assert(NULL != str); return *str == '\0' ? 0 : (1 + get_strlen(++str));}int main(){ char *str = "chenyu"; char str1[10] = "chenyu"; char str2[10] = "chengongyu"; printf("str length is %d\n", get_strlen(str)); printf("str1 length is %d\n", get_strlen(str1)); printf("str2 length is %d\n", get_strlen(str2));}
3、结果分析和总结
1111deMacBook-Pro:dabian a1111$ vim get_strlen.c1111deMacBook-Pro:dabian a1111$ gcc -g get_strlen.c -o get_strlen1111deMacBook-Pro:dabian a1111$ ./get_strlenstr length is 6str1 length is 6str2 length is 16
这个函数用了递归遇到'\0'就停止了,strlen函数也一样,不信你试下字符数组里面包含'\0'这个字符试下,是不是只计算这个字符之前的数据大小,但是这里为什么str2的长度不是10呢?这里我用strlen()函数测试结果也是一样,因为编译器会在末尾加上'\0',但是str2[9]已经占用了,所以编译器就不会加了, strlen会一直计算到下一个'\0',但是str2[9]之后是未知的,所以strlen()也是未知的,从这里我们也可以分析出,char *str = "***";末尾一定会有'\0',但是字符数组末尾不会有‘\0’,只不过在编译的时候,如果最后一个字符没有被占用,就会被编译器自动加上‘\0’,否则不会加上。
阅读全文
0 0
- C和指针之实现strlen函数
- 指针实现strlen函数
- 【C】c语言模拟实现strcopy函数和strlen函数!!
- C/C++--strlen函数实现
- C和指针之字符串之实现strcpy函数
- C语言 strlen函数实现
- C语言之strlen函数
- C语言之strlen函数
- C和指针之字符串实现strrstr函数
- C和指针之字符串简单实现strchr、strcmp函数
- 杂记之C语言函数strlen和操作符sizeof
- 实现strcpy和strlen函数
- 实现strcpy和strlen函数
- 实现strlen 和 strcat 函数
- C和指针之函数之实现简单的printf函数(支持%d, %f, %c, %s)
- C和指针之字符串之strlen、strcpy、 strcat、strcmp使用总结
- 用C实现strcpy、strcmp、strlen函数
- 【C语言】strlen函数的实现
- WinInet 和 WinHttp 有何区别?
- 线程(二)——线程的状态及常用方法
- 分析并写出下列程序的运行结果
- AndroidStudio导入项目一直卡在Building gradle project info最快速解决方案
- 数据库创建临时表
- C和指针之实现strlen函数
- UGUI检测射线穿透的方法
- android 读取res/values/arrays中的数据
- LeetCode 62. Unique Paths (Medium)
- leetcode20. Valid Parentheses
- Spring学习笔记
- LeetCode--LRU Cache
- HYSBZ
- C 语言指针怎么理解?