C语言中求字符串长度的函数的几种实现方法
1.最常用的方法是创建一个计数器,判断是否遇到‘\0',不是'\0'指针就往后加一。
int my_strlen(const char *str) { assert(str != NULL); int count = 0; while (*str != '\0') { count++; str++; } return count; }
2.不创建计数器,从前向后遍历一遍,没有遇到‘\0'就让指针向后加一,找到最后一个字符,记下来地址,然后用最后一个字符的地址减去起始地址,就得到了字符串的长度。
int my_strlen(const char *str) { char *end = str; assert(str!=NULL); assert(end!=NULL); while (*end != '\0') { end++; } return end - str; }
3.不创建计数器,递归实现。
int my_strlen(const char *str) { assert(str != NULL); if (*str == '\0') { return 0; } else { return (1 + my_strlen(++str)); } }
也可以写成这样:
int my_strlen(const char *str) { assert(str != NULL); return (*str == '\0') ? 0 : (my_strlen(++str) + 1); }
或者这样:
int my_strlen(const char *str) { assert(str != NULL); return (*str == '\0') ? 0 : (my_strlen(str+1) + 1); }
这篇关于c语言中获取字符串长度的函数就介绍到这了,需要的朋友可以参考一下。
相关推荐
-
C语言中一些将字符串转换为数字的函数小结
C语言atoi()函数:将字符串转换成int(整数) 头文件: #include <stdlib.h> atoi() 函数用来将字符串转换成整数(int),其原型为: int atoi (const char * str); [函数说明]atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回. [返回值]返回转换后的
-
使用C语言递归与非递归实现字符串反转函数char *reverse(char *str)的方法
代码如下所示: 复制代码 代码如下: // 递归实现字符串反转 char *reverse(char *str) { if( !str ) { return NULL; } int len = strlen(str); if( len > 1 ) { char ctemp =str[0]; str[0] = str[len-1]; str[len-1] = '/0';// 最后一
-
C语言字符/字符串相关函数收藏大全
字符处理函数 int tolower(char ch)若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z') int toupper(char ch)若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z') int _tolower(char ch)返回ch相应的小写字母('a'-'z') int _toupper(char ch)返回ch相应的大写字母('A'-'Z') int toascii(char c)返回c相应的ASCII 举个栗子: #include<s
-
与ASCII码相关的C语言字符串操作函数
C语言toascii()函数:将字符转换成对应的ASCII码 头文件: #include <ctype.h> 定义函数: int toascii(int c); 函数说明:toascii()会将参数c 转换成7 位的unsigned char 值,第八位则会被清除,此字符即会被转成ASCII码字符. 返回值:将转换成功的ASCII 码字符值返回. 范例:将int 型a 转换成ASSII 码字符. #include <stdlib.h> main(){ int a = 217; ch
-
C语言中字符串常用函数strcat与strcpy的用法介绍
strcpy原型声明:extern char *strcpy(char* dest, const char *src);头文件:#include <string.h>功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串.返回指向dest的指针.函数实现: 复制代码 代码如下: /********************** * C语言标准库函数strcpy的一种典型的工业级的
-
C语言中sscanf()函数的字符串格式化用法
介绍 sscanf()为C语言标准库函数,用于从指定字符串中读入与指定格式相符的数据.函数原型声明在stdio.h头文件中: int sscanf(const char *str, const char *format, ...); 该函数根据参数format(格式化字符串)来转换参数str指向的字符串,转换后的结果存于对应的可变参数内.其返回值为按照指定格式转换符成功读入且赋值的可变参数数目(若发生匹配错误而部分成功,该数目会小于指定的参数数目,甚至为0).若首次成功转换或错误匹配发生前输入已
-
C语言实现返回字符串函数的四种方法
前言 C语言返回字符串函数共有四种方式,分别如下: 使用堆空间,返回申请的堆地址,注意释放 函数参数传递指针,返回该指针 返回函数内定义的静态变量(共享) 返回全局变量 下面来看看详细的介绍 其实就是要返回一个有效的指针,尾部变量退出后就无效了. 使用分配的内存,地址是有效 char *fun() { char* s = (char*)calloc(100, sizeof(char*) ); if (s) strcpy ( s , "abc " ); return s; } 但这种方式
-
C语言实现字符串操作函数的实例
C语言实现字符串操作函数的实例 在编写程序的过程中,我们经常使用到一些字符串函数,例如求字符串长度,拷贝字符串--,这些函数都在C标准库中存在,我们可以直接使用.但我们还需要掌握这些函数的实现方法,今天来看看一些常用的字符串操作函数的实现方法. 1.strlen strlen是用来求字符串长度的函数,字符串长度就是它所包含的字符个数. 今天给大家介绍三种实现strlen函数的方法 (1)定义一个计数器count //方式一:定义一个计数器 size_t my_strlen(const char
-
c语言中字符串分割函数及实现方法
1.问题引入 自己在写一个linux下的模拟执行指令的时候,遇到了输入"cat a.c",要将该字符串分解成cat和a.c两个单独的字符串,虽然知道有strtok的存在,但是想自己尝试写一下,于是就自己写了一个,不过总是遇到这样或那样的问题,虽然最后调通了,不过确浪费了不少时间:后来作业交上去以后又仔细阅读了strtok函数,发现原来linux下已经改成strsep,所有在这里就写一下自己所走的过程. 2.自己写的字符串分割函数:用于分割指令,比如cat a.c最后会被分割成cat和a
-
基于C语言字符串函数的一些使用心得
就字符串的拼接函数为例strcat.原型:extern char *strcat(char *dest,char *src);用法:#include <string.h>功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'.说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串. 返回指向dest的指针.举例: 复制代码 代码如下: // strcat.c #include <syslib.h&
随机推荐
- THinkPHP获取客户端IP与IP地址查询的方法
- Linux Crontab 启动 、运行 和编辑 查看的命令
- Bootcfg 配置、查询或更改 Boot.ini 文件设置
- 在ASP.NET中使用Session常见问题集锦
- Javascript技术难点之apply,call与this之间的衔接
- PHP文件生成的图片无法使用CDN缓存的解决方法
- python通过urllib2获取带有中文参数url内容的方法
- python 正则表达式 概述及常用字符
- Python开发微信公众平台的方法详解【基于weixin-knife】
- Android实现自定义圆角对话框Dialog的示例代码
- 详解如何使用vue-cli脚手架搭建Vue.js项目
- JavaScript Event学习第六章 事件的访问
- 十分钟内学会 避免用户刷新导致重复POST提交
- 有笔记本必看的笔记本电脑充电等使用技巧
- JS中FRAME的操作问题实例分析
- PHP实现移除数组中为空或为某值元素的方法
- 3550配置DHCP中继代理工程实例
- JavaScript 五大常见函数
- RxJava+Retrofit+Mvp实现购物车
- C#制作二维柱状图方法