面试题:用三种方法模拟实现strlen函数
来源:互联网 发布:三星备份数据怎样恢复 编辑:程序博客网 时间:2024/06/05 14:13
有三种方法解决这个问题
方法一:设置一个整形计数器,遍历整个字符串。
方法二:设置一个char*变量标记字符串的首地址,通过指针相减得到字符串的长度
方法三:采用函数递归的方法
第一种,采用计数器方法,定义一个变量来计数,模拟实现strlen
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<assert.h>int my_strlen(const char *s)//定义为const,是希望此字符串不被修改{ assert(s);//判断指针s是否为空(空指针是不能够解引用的) int count = 0;//定义一个变量,通过它的变化来显示字符串的长度 while (*s) { count++; s++; } return count;}int main(){ int count = 0; char str[100] = { 0 }; printf("str:");//可随机输入一个字符串,计算它的长度 scanf("%s", &str); count=my_strlen(str); printf("%d\n", count); system("pause"); return 0;}
第二种,采用指针相减(指针—指针)的方法模拟实现strlen
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<assert.h>int my_strlen( const char *s)//定义为const,是希望此字符串不被修改{ char *p = s;//把字符串的首地址传给指针p assert(p);//判断指针p是否为空(空指针是不能够解引用的) while (*p != '\0') { p++;//产生了整个字符串 } return p - s;//通过指针相减,返回字符串的长度}int main(){ int num = 0; char str[100] = { 0 }; printf("str:");//可随机输入一个字符串,计算它的长度 scanf("%s", &str); num=my_strlen(str); printf("%d\n", num); system("pause"); return 0;}
第三种,采用函数递归的方法模拟实现strlen
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<assert.h>int my_strlen(const char *s)//定义为const,是希望此字符串不被修改{ assert(s);判断指针s是否为空(空指针是不能够解引用的) if (*s == '\0')//如果字符串的长度为0,*s为'\0' ,此表达式为真, 执行return 0;语句 return 0; else return 1+ my_strlen(s+1);}int main(){ int num = 0; char str[100] = {0}; printf("str:");//可随机输入一个字符串,计算它的长度 scanf("%s", &str); num=my_strlen(str); printf("%d\n", num); system("pause"); return 0;}
阅读全文
0 0
- 面试题:用三种方法模拟实现strlen函数
- 面试题 模拟实现strlen函数的3种方法。
- 三种方法模拟实现strlen函数
- 模拟实现strlen函数
- 模拟实现strlen函数
- ##模拟实现strlen函数
- 模拟实现strlen函数
- 模拟实现strlen函数
- 模拟实现strlen函数
- 模拟实现strlen函数
- 模拟实现strlen函数
- 模拟实现 strlen 函数
- 用三种方法实现strlen函数
- 用三种不同的方法模拟实现strlen
- 面试题:模拟实现strcpy函数
- 面试题:模拟实现strcat函数
- 模拟实现strlen()函数
- 模拟实现strlen,strcpy函数
- Caused by: java.lang.ClassNotFoundException: net.sf.ehcache.CacheManager
- 相邻两数最大差值
- apache+wsgi+flask配置
- OpenGL-绘制旋转立方体
- Java——this关键字总结
- 面试题:用三种方法模拟实现strlen函数
- loadrunner Web_类函数之web_add_auto_filter()
- JDBC 实效数据分页查询
- duilib消息机制
- java模式—装饰者模式
- AndroidStudio升级报错:Connection failed (connect timed out). Please check network connection and try ...
- Python操作Neo4j的基本操作
- JQuery制作文字置顶、置底与上下移动及全选反选
- JavaScript总结