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语言中sscanf()函数的字符串格式化用法
介绍 sscanf()为C语言标准库函数,用于从指定字符串中读入与指定格式相符的数据.函数原型声明在stdio.h头文件中: int sscanf(const char *str, const char *format, ...); 该函数根据参数format(格式化字符串)来转换参数str指向的字符串,转换后的结果存于对应的可变参数内.其返回值为按照指定格式转换符成功读入且赋值的可变参数数目(若发生匹配错误而部分成功,该数目会小于指定的参数数目,甚至为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
-
C语言中一些将字符串转换为数字的函数小结
C语言atoi()函数:将字符串转换成int(整数) 头文件: #include <stdlib.h> atoi() 函数用来将字符串转换成整数(int),其原型为: int atoi (const char * str); [函数说明]atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回. [返回值]返回转换后的
-
c语言中字符串分割函数及实现方法
1.问题引入 自己在写一个linux下的模拟执行指令的时候,遇到了输入"cat a.c",要将该字符串分解成cat和a.c两个单独的字符串,虽然知道有strtok的存在,但是想自己尝试写一下,于是就自己写了一个,不过总是遇到这样或那样的问题,虽然最后调通了,不过确浪费了不少时间:后来作业交上去以后又仔细阅读了strtok函数,发现原来linux下已经改成strsep,所有在这里就写一下自己所走的过程. 2.自己写的字符串分割函数:用于分割指令,比如cat a.c最后会被分割成cat和a
-
C语言实现返回字符串函数的四种方法
前言 C语言返回字符串函数共有四种方式,分别如下: 使用堆空间,返回申请的堆地址,注意释放 函数参数传递指针,返回该指针 返回函数内定义的静态变量(共享) 返回全局变量 下面来看看详细的介绍 其实就是要返回一个有效的指针,尾部变量退出后就无效了. 使用分配的内存,地址是有效 char *fun() { char* s = (char*)calloc(100, sizeof(char*) ); if (s) strcpy ( s , "abc " ); return s; } 但这种方式
-
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语言字符串函数的一些使用心得
就字符串的拼接函数为例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&
-
与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语言递归与非递归实现字符串反转函数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语言实现字符串操作函数的实例
C语言实现字符串操作函数的实例 在编写程序的过程中,我们经常使用到一些字符串函数,例如求字符串长度,拷贝字符串--,这些函数都在C标准库中存在,我们可以直接使用.但我们还需要掌握这些函数的实现方法,今天来看看一些常用的字符串操作函数的实现方法. 1.strlen strlen是用来求字符串长度的函数,字符串长度就是它所包含的字符个数. 今天给大家介绍三种实现strlen函数的方法 (1)定义一个计数器count //方式一:定义一个计数器 size_t my_strlen(const char
随机推荐
- MySQL查询优化--调整内部变量的详解
- D3.js实现折线图的方法详解
- Angular 4依赖注入学习教程之Injectable装饰器(六)
- 基于ISAPI Rewrite软件实现IIS图片防盗链方法
- 桌面中心(三)修改数据库
- thinkphp3.2实现上传图片的控制器方法
- PHP实现支付宝即时到账功能
- html向js方法传递参数具体实现
- shell脚本中执行python脚本并接收其返回值的例子
- insert into tbl() select * from tb2中加入多个条件
- 一个不错的仿携程自定义数据下拉选择select
- jquery在ie7下选择器的问题导致append失效的解决方法
- 原生javascript实现分页效果
- 八皇后问题实现代码分享
- apache2.2.4+mysql5.0.77+php5.2.8安装精简
- Android实现简单MD5加密的方法
- Android Animation实战之一个APP的ListView的动画效果
- 三明科技免费310M全能空间
- java中接口(interface)及使用方法示例
- Docker内如何访问本机(宿主机)的具体方法