-
2021-05-19 07:58:49
1.最常用的方法是创建一个计数器,判断是否遇到‘ ',不是' '指针就往后加一。
int my_strlen(const char *str)
{
assert(str != NULL);
int count = 0;
while (*str != ' ')
{
count++;
str++;
}
return count;
}
2.不创建计数器,从前向后遍历一遍,没有遇到‘ '就让指针向后加一,找到最后一个字符,记下来地址,然后用最后一个字符的地址减去起始地址,就得到了字符串的长度。
int my_strlen(const char *str)
{
char *end = str;
assert(str!=NULL);
assert(end!=NULL);
while (*end != ' ')
{
end++;
}
return end - str;
}
3.不创建计数器,递归实现。
int my_strlen(const char *str)
{
assert(str != NULL);
if (*str == ' ')
{
return 0;
}
else
{
return (1 + my_strlen(++str));
}
}
也可以写成这样:
int my_strlen(const char *str)
{
assert(str != NULL);
return (*str == ' ') ? 0 : (my_strlen(++str) + 1);
}
或者这样:
int my_strlen(const char *str)
{
assert(str != NULL);
return (*str == ' ') ? 0 : (my_strlen(str+1) + 1);
}
这篇关于c语言中获取字符串长度的函数就介绍到这了,需要的朋友可以参考一下。
更多相关内容 -
C语言求字符串长度
2019-09-16 12:10:27求字符串的长度 有两种方法 第一种: 非递归:思想很简单就是调用<string.h>库函数中的strlen()函数即可 代码如下所示: #include<stdio.h> #include<string.h> int main() { char *str = "hello...求字符串的长度
有两种方法
第一种:
非递归:思想很简单就是调用<string.h>库函数中的strlen()函数即可
代码如下所示:#include<stdio.h> #include<string.h> int main() { char *str = "hello"; int len = strlen(str); printf("%d\n", len); return 0; }
第二种:
递归:思想就是大问题化成小问题,求字符串长度莫非就是字符串中的字母个数相加,例如hello就是5个字母即它的字符串长度就是5。递归满足的两个条件是:1.自己调用自己;2.终止条件
而怎么算把字符串读完,当遇到’\0’时就停止了,所以这个即是递归函数的终止条件;而怎么调用自己呢,我们知道字符串长度可以是h+(ello)的长度,而ello可以是e+(llo)的长度,以此类推,即可以写出递归函数
代码如下所示:#include<stdio.h> #include<string.h> Mystrlen(char *p)//p是指针变量存放的是字符串首位字符的地址 { if (*p == '\0')//*p表示间接访问,若字符串地址里的内容是'\0'即表示字符串长度为0 { return 0; } else//若字符串地址里的内容不是'\0',则最少返回1,即字符串中有一个字符 { return 1 + Mystrlen(p + 1); } } int main() { char *str = "hello"; int len = Mystrlen(str); printf("%d\n", len); return 0;
运行结果如下所示:
-
C语言求字符串的长度
2021-11-17 16:00:36C语言写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度,要求用指针。 解题思路:求字符串的长度,还要求用指针,读者首先应该想一下不用指针是否可以,求字符串的长度需要判断字符串的...C语言写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度,要求用指针。
解题思路:求字符串的长度,还要求用指针,读者首先应该想一下不用指针是否可以,求字符串的长度需要判断字符串的结束标志。
C语言源代码演示:
#include<stdio.h>//头文件
int main()//主函数
{
int sum_Length(char *point);//函数声明
int len;//定义整型变量
char str[20];//定义字符数组
printf("请输入要求长度的字符串:");//提示语句
scanf("%s",str);//因为str是数组,不用加取地址符&
len=sum_Length(str);//函数调用
printf("字符串的长度是%d\n",len);//输出结果
return 0;//主函数返回值为0
}
int sum_Length(char *point)//函数功能的实现
{
int number=0;//定义整型变量
while(*point!='\0')
{
number++;
point++;
}
return number;//将number返回到函数调用处
}编译运行结果如下:请输入要求长度的字符串:Cyuyan
字符串的长度是6
--------------------------------
Process exited after 2.775 seconds with return value 0
请按任意键继续. . .今天的分享就到这里了,大家要好好学C语言/C++哟~
写在最后:对于准备学习C/C++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!
C语言C++编程学习交流圈子,QQ群:763855696【点击进入】
C语言从入门到精通(C语言入门C语言教程C语言零基础C语言基础C语言学习C
整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
编程学习视频分享:
-
C语言中计算字符串长度与分割字符串的方法
2021-01-01 08:13:59C语言strlen()函数:返回字符串的长度 头文件: #include strlen()函数用来计算字符串的长度,其原型为: unsigned int strlen (char *s); 【参数说明】s为指定的字符串。 strlen()用来计算指定的字符串s 的... -
c语言求字符串的长度(strlen)
2019-05-07 19:58:31说到字符串这个老铁啊,它有一个明显的特征,就是以‘\0’结尾。那么如果要求它的长度,就可以利用这个特性。 下面贴出它的代码实现:(此处代码可正确运行,但是并不是最终结果哦,最终结果后面给出) #...说到字符串这个老铁啊,它有一个明显的特征,就是以‘\0’结尾。那么如果要求它的长度,就可以利用这个特性。 下面贴出它的代码实现:(此处代码可正确运行,但是并不是最终结果哦,最终结果后面给出)
#include<stdio.h> #include<stdlib.h> #include<assert.h> size_t My_Strlen(const char* str)//size_t在底层也是一个Typedef实现的哦 { int size = 0; while (str[size] != '\0') { size++; } return size; } int main() { char* str = "abc"; int ret=My_Strlen(str); printf("%d\n",ret); system("pause"); return 0; }
但是如果代码仅仅到此就结束,那你就错啦,试想如果把main函数中的“abc”换
成NULL。会出现什么情况。这里小编已经尝试过了。
------》然后程序就崩溃了,如果各位小伙伴们想尝试一下的话,也可以哦。
重点来了!!!!
那我们应该怎么办呢?
其实有两种解决途径:
1、从调用者的角度
2、从程序设计者的角度
下面给出完整代码:#include<stdio.h> #include<stdlib.h> #include<assert.h> size_t My_Strlen(const char* str) { 方法1://if (str == NULL)//从设计者的角度 //{ //return 0; //} 方法2:assert(str!=NULL);//那么什么时候用方法1什么时候用方法2呢 int size = 0; while (str[size] != '\0') { size++; } return size; } int main() { char str[] = "heheh"; char* p = str; int ret = 0; if (p != NULL);//从调用者的角度 { ret = My_Strlen(str); printf("%d\n", ret); } system("pause"); return 0; }
关于什么时候用方法1什么时候用方法2的问题?
assert:叫断言,如果assert()括号中的为真,则执行程序。如果为假,则程序直接崩溃。
拿生活中的例子来说,如果是值得原谅的错误的话,就用方法1,如果错误很严重的话,就用断言的方法。比如说,服务器的开发,服务器开发有个特性就是每时每刻不间断,那么如果此时用了断言的话,程序直接崩掉,那服务器就没有办法使用了,但是如果是银行系统,那么是不能容忍出现一点小错误的 就用断言。 -
C语言获取字符串长度的几种方法
2020-09-02 10:50:58在C语言中,想要获取字符串长度可以有很多方法,下面分别介绍 一、使用sizeof()运算符 在C语言中,sizeof() 是长度的运算符,括号中可以放入数据类型或者表达式,一般我们用来计算字符串长度。 基本用法: int i=10;... -
C语言 怎么求字符串的长度,实例讲解(简洁)
2020-08-31 10:31:51先上代码 #include<stdio.h> #include<string.h> void main() { char str[] = "12345";... printf("%d",strlen...求字符串长度的方法一: 用strlen函数来求字符串的长度,前提是有头文件#include<stri -
使用C语言提取子字符串及判断对称子字符串最大长度
2020-12-31 11:50:49/*遍历字符串,非ASCII字符读取2个字节,ASCII读取一个字节,获取字符串长度*/ int StrLenU(const char* string) { int len = 0 ; const char* p = string; while(*p++ != '\0') { if(*p > 0x80 || *p < 0) ... -
C语言计算字符串长度的方法
2020-04-02 18:04:53C语言计算字符串长度的方法 思路分析 字符串的结束标志是’\0’,因此计算字符串的长度的核心思想就是通过字符指针顺序检索每一个字符,直到检测到’\0’为止,以下是实现该算法的几种方式。 代码实现 1.用while循环... -
C语言求字符串数组的长度函数计算
2020-03-08 10:49:24常见的计算长度的函数有两个,sizeof()和strlen(),但是,它们之间的差别还是很大的。 sizeof():主要负责计算数组的长度; strlen():主要负责...(2)strlen():strlen,求字符串有效长度 例如: #in... -
C语言 计算字符串的长度
2021-05-04 21:54:41#include<stdio.h> int length(char *s){ char *p=s; while(*p!='\0'){ p++; } return p-s;... printf("请一个字符串:"); scanf("%s",&s); printf("长度为:%d",length(s)); } -
C语言-求字符串长度的几种方法
2022-02-22 21:50:011.使用库函数<string.h> #include <stdio.h> #include <string.h> int main() { char arr[] = "abcde"; printf("%d ", strlen(arr)); return 0; } 2.使用循环 #include <... -
C语言中简易代码求字符串长度
2022-03-25 14:33:37求解的方法 方法从最简易到进阶 第一种 直接使用库函数 //求子符串长度 ...自己写的求字符串长度函数 void my_strlen(char* str) { int count = 0; while (*str != 0) { count++; str++; } printf( -
c语言计算字符串长度
2020-05-04 16:38:07一、使用strlen()函数 C语言 strlen 函数用来求字符串的...最终统计的字符串长度不包括’\0’。 头文件:string.h 二、使用sizeof()操作符 sizeof(str)/sizeof(str[0]); //假设str为待求的字符串数组名 sizeof(str)... -
C语言用指针求字符串长度
2022-04-06 18:09:51C语言用指针求字符串长度 -
C语言中求字符串的长度
2021-05-19 08:38:38在C语言中求字符串的长度,可以使用sizeof()函数和strlen()函数,后者需要引入string.h (#include )因为C语言字符串是以 \0 结尾表示结束的,如:char str1[] = {'h','e','l','l','o','\0'};使用sizeof(str1) 结果为... -
求字符串长度(不使用strlen函数)C语言
2022-02-22 16:30:43给定一组字符串求出长度,规定不能使用strlen函数 方法1:源码 #include<stdio.h> int mylen(char *str) } int count = 0; while (*str != ‘\0’) } count++; str++; } return count; } int main() { int s ... -
C语言 | 求字符串的长度
2021-02-08 15:32:40例78:C语言写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度,要求用指针。 解题思路:求字符串的长度,还要求用指针,读者首先应该想一下不用指针是否可以,求字符串的长度需要判断字符串的... -
C语言编写函数求字符串长度的几种实现方法
2022-01-23 10:28:05我们都知道在C语言标准库string.h中有一个strlen()函数可以求得字符串长度,那么如果让我们自己写一个这样的函数如何去写呢?下面介绍三种实现的方法。 一、使用计数器的方法 所谓计数器方法,顾名思义,就是创建一... -
c语言 指针 求字符串长度
2022-04-11 22:06:12c语言 指针 求字符串长度 int stren(char* str){ char* start=str; char* end=str; while(*end!='\0'){ end++; } return end-start; } #include<stdio.h> int main(){ char arr[]="bit"; int len=... -
C语言常用字符串库函数总结
2021-04-06 21:49:51新人报道,总结一下C语言字符串库函数的使用,一方面是和大家分享,一方面也是为了加深记忆,主要参考《C和指针》一书,若有描述不当,望指教。 1、 字符串基础 C语言不像其他编程语言有专门的字符串类型,C语言的... -
C语言字符串长度
2022-03-10 21:05:40在 C 语言中,字符串实际上是使用空字符 \0 结尾的一维字符数组。因此,\0 是用于标记字符串的结束。空字符(Null character)又称结束符,缩写 NUL,是一个数值为 0 的控制字符,\0 是转义字符,意思是告诉编译器,... -
如何求C语言字符串长度(strlen函数和sizeof关键字)
2021-10-28 10:59:19如何求C语言字符串长度(strlen函数和sizeof关键字) 在程序里,一般会用***strlen()***函数或***sizeof()***来获取一个字符串的长度,但这2种方法获取的字符串的长度其实是不一样,我们用如下函数进行测试: void ... -
C语言:用指针求字符串长度
2018-10-20 21:12:39//用指针求字符串长度 int My_strlen(char *src) { int len = 0; while(*src++ != '\0')// { len++; //src = src+1;//如果while循环中不加src++,可以加这两个语句 //src++; } r... -
C语言之 字符串长度的计算方法
2018-08-16 20:39:04(1)计算字符串长度时关键是要注意辨认转义字符;(2)一个转义字符总是以反斜杠开始,再加一个其他字符组成。所以,遇到反斜杠时要特别注意!!! 1、不带转义字符的字符 如:“abc!x=/”,其长度为7 2、带转义... -
C语言实验-编写一个程序,求字符串的长度,不能使用strlen函数。
2021-05-26 16:32:50编写一个程序,求字符串的长度,不能使用strlen函数。 (代码提示:i=0;while(s[i]!= '\0')i++; 则最后i的值就是字符串长度) -
C语言——求字符串长度
2019-01-29 22:16:14求一个长度不大于100的字符串的长度,要求不使用strlen方法,通过自定义的函数实现字符串长度的计算。 函数定义为:int GetStrLen(char *pStr) Input 一行字符串,使用gets(str)方法读取此行字符串。 Output ...