精华内容
下载资源
问答
  • 标准C库的函数的示例实现。 入门 本节介绍如何设置项目所需的构建环境。 该项目已经过 20.10上的GCC 10和Clang 11的C ++编译器测试。 使用以下命令至少安装这些编译器之一。 海湾合作委员会10 ➜ sudo apt -y ...
  • 本文实例讲述了C++不使用变量求字符串长度strlen函数的实现方法。分享给大家供大家参考。具体实现方法如下: 1、strlen的源码实现: size_t strlen(const char *str) //strlen不做内存非法判断,如果是NULL,会...
  • c语言本身有strlen函数,这个是利用递归自己写的
  • 在PHP中,strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别
  • strlen函数

    千次阅读 2021-05-19 20:37:05
    C语言提供了strlen()函数,用于求字符串的长度。函数定义如下: int strlen (const char *s); 包含的头文件是: #include <string.h> 该函数就是求参数 s 指向字符串的长度。在介绍“数组”的这一章节中...

    C语言提供了strlen()函数,用于求字符串的长度。函数定义如下:

    int strlen (const char *s);

    包含的头文件是:

    #include <string.h>

           该函数就是求参数 s 指向字符串的长度。在介绍“数组”的这一章节中,讲解了字符串的定义。C语言规定,字符串必须以'\0'字符作为最后一个字符,表示字符串的结束字符,称为:字符串结束符。字符串结束符'\0'的ASCII是0数值。

        例如"abcde"这样的字符串,实际上包含6个字符,分别是:

    'a','b','c','d','e','\0'

        可以看到,字符串就是由多个单独的字符组成,其中,最后一个字符必须是字符串结束符'\0'。

        那么,我们可以把一个字符串赋值给字符数组,如下:

    char array[6] = {'a','b','c','d','e','\0'};

           如下是一个测试例子:

           运行的结果如下:

           可以看到,定义了字符数组array,数组名代表首地址,所以,数组名array可以表示一个指针,指向array数组存放数据的内存块。

           那么,strlen(array); 获取了array指向内存块的字符个数。而且,计算字符个数的时候,是遇到字符串结束符 '\0' 字符就认为结束。所以,strlen()函数的返回的字符串长度,不包含字符串的结束符。

           那么,我们可以写一个测试例子,设置 array[3] = '\0',就是设置数组中下标为3的元素是字符串结束符。测试代码如下:

           程序运行结果如下:

           此时,array[6] 中的数据相当于 {'a', 'b', 'c', '\0', 'e', '\0'};那么,使用strlen()函数获取字符串个数时,就从array指向的第一个元素开始数,遇到第四个元素是'\0'字符,是字符串结束符。

    所以,strlen()遇到字符串结束符之后,结束字符串的长度计算。

    韦凯峰 Linux C/C++ 程序设计教程,Linux 系统编程,Openwrt 系统开发,微信:13926572996,QQ:1523520001,博客:www.mylinux.vip

    展开全文
  • 编写一个程序,求字符串的长度,不能使用strlen函数。 (代码提示:i=0;while(s[i]!= '\0')i++; 则最后i的值就是字符串长度)
  • Strlen函数

    千次阅读 2020-04-07 10:14:36
    strlen函数的函数原型 size_t strlen( const char *string ); 由strlen函数的原型可以看出,strlen函数的返回值类型为size_t类型 strlen函数的调用 #include<stdio.h> #include<string.h> int main()...
    strlen函数的函数原型
    size_t strlen( const char *string );
    
    • 由strlen函数的原型可以看出,strlen函数的返回值类型为size_t类型
    strlen函数的调用
    #include<stdio.h>
    #include<string.h>
    int main()
    {
    	char arr1[] = "abcdef";
    	char arr2[] = "abc";
    	if (strlen(arr2) - strlen(arr1)>0)
    		printf("arr2>arr1");
    	else
    		printf("arr2<arr1");
    	return 0;
    }
    
    • 上述代码的返回结果为arr2>arr1,在我们一般看来,strlen(arr2)的结构为3,strlen(arr1)的结果为6,那么显而易见的就是,arr2<arr1,那么打印出来的结果为什么会是arr2>arr1呢?
    • 原因在于:由库函数的函数原型可以看出,strlen函数的返回值类型是size_t类型的,也就是说,是无符号的整形,那么本身的话,3-6的值是-3,是一个负数,但是两个无符号数进行相减的结果肯定也是一个无符号数,那么当-3被看成是无符号数来对待的话,他就是一个数值非常大的正数了,那么打印的结果是arr2>arr1也就不奇怪了,因为arr2-arr1的返回值是一个正数。
    注意:strlen函数的返回值类型是size_t类型的
    • 但是,一般在模拟实现的时候,我都会把strlen函数的返回值类型给成是int类型的。其实,strlen函数的返回值给成int类型还是给成size_t类型都是说的过去的。如果给成size_t类型的话,合理就合理在返回值不要是负数的,但是,如果给成size_t类型的话,有时候也是会出现一些错误的,比如说上面的哪个代码,从实际上来看,arr2的长度是要小于arr1的长度的,但是打印出来的结果却是arr2>arr1。如果给成int类型,那当然也是可以了,而且不会那么容易出错。
    strlen函数的模拟实现
    • 计数器方法
    #include<stdio.h>
    #include<assert.h>
    int my_strlen(const char* str)
    {
    	int count = 0;
    	assert(str);
    	while (*str != '\0')
    	{
    		count++;
    		str++;
    	}
    	return count;
    }
    int main()
    {
    	char arr[] = "hello world";
    	int len = my_strlen(arr);
    	printf("%d", len);
    	return 0;
    }
    
    • 递归方法
    #include<stdio.h>
    #include<assert.h>
    int my_strlen(const char* str)
    {
    	assert(str);
    	if (*str == '\0')
    		return 0;
    	else
    		return 1 + my_strlen(str + 1);
    }
    int main()
    {
    	char arr[] = "hello world";
    	int len = my_strlen(arr);
    	printf("%d", len);
    	return 0;
    }
    
    • 指针-指针
    #include<stdio.h>
    #include<assert.h>
    int my_strlen(char* str)
    {
    	assert(str);
    	char* x = str;
    	while (*str++ != '\0')
    	{
    		;
    	}
    	return str - x - 1;
    }
    int main()
    {
    	char arr[] = "hello world";
    	int len = my_strlen(arr);
    	printf("%d", len); 
    	return 0;
    }
    
    • 三目运算符+递归
    #include<stdio.h>
    #include<assert.h>
    int my_strlen(const char* str)
    {
    	assert(str);
        return !(*str) ? 0 : 1 + my_strlen(str + 1);
    }
    int main()
    {
        char arr[] = "hello world";
        int len= my_strlen(arr);
        printf("%d\n", len);
        return 0;
    }
    
    strlen函数的注意事项
    • 字符串需要以\0作为结束的标志,strlen函数返回的是在字符串中\0前面出现的字符个数,不包括\0
    • 参数指向的字符串必须要以\0作为结束的标志,不然的话,返回值将是未知的。
    • 函数的返回值是size_t
    • strlen函数的模拟实现
    展开全文
  • strlen函数的用法及模拟实现strlen函数的三种方法strlen函数的用法二级目录三级目录 strlen函数的用法 1.strlen函数的函数原型:size_t strlen(const char*str) 2. 二级目录 三级目录

    一、strlen函数的用法

    1.strlen函数的函数原型:size_t strlen(const char*str)
    该函数包含在string.h的头文件中。
    2.该函数用于求参数str指向字符串的长度。
    3.注意:
    (1)字符串中’\0’作为结束标志,strlen函数返回的是在字符串中’\0’前面的字符个数(不包含’\0’)。
    (2)注意函数的返回值为size_t,是一个无符号的类型(做题目时要注意)。

    strlen的简单应用

    代码显示:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
    	char arr[] = "hello";
    	int len = strlen(arr);
    	printf("%d\n", len);
    	return 0;
    }
    

    显示结果:
    在这里插入图片描述
    这里注意,当字符串的下一位不是’\0’时,无法用strlen函数求长度,求出的为随机值
    代码显示:

    int main()
    {
    	char arr[] = { 'h', 'e', 'l', 'l', 'o' };
    	int len = strlen(arr);
    	printf("%d\n", len);
    	return 0;
    }
    

    显示结果:
    在这里插入图片描述
    此时这里的19是随机值,即strlen函数在数组空间里不断向后找’\0’,直到找到’\0’时的长度,而不是我们想要求得字符串长度了

    二、指针模拟实现strlen函数

    代码显示:

    int my_strlen(const char* str)
    {
    	int count = 0;//count用来记录字符串的字符个数
    	 while(*str != '\0')//即从首元素地址开始一个个往后找'\0',并记录找到的字符个数
    	{
    		count++;
    		str++;
    	}
    	return count;
    }
    int main()
    {
    	char arr[] = "hello";
    	int len =my_strlen(arr);//arr是数组,数组传参,传过去的是数组的首元素地址
    	printf("%d\n", len);
    	return 0;
    }
    

    显示结果:
    在这里插入图片描述

    三、递归模拟实现strlen函数

    代码显示:

    int my_strlen(const char* str)                        //递归是通过把大事化小
    {                                                    //my_strlen("hello");
    	if (*str != '\0')                                //1+my_strlen("ello");
    	{                                                //1+1+my_strlen("llo");
    		return 1 + my_strlen(str + 1);
    	}
    	else
    		return 0;
    	
    }
    int main()
    {
    	char arr[] = "hello";
    	int len =my_strlen(arr);//arr是数组,数组传参,传过去的是数组的首元素地址
    	printf("%d\n", len);
    	return 0;
    }
    

    显示结果:
    在这里插入图片描述

    展开全文
  • Strlen函数详解

    万次阅读 多人点赞 2020-05-08 10:11:31
    Strlen函数详解 函数介绍 strlen函数的函数原型 size_t strlen( const char *string ); 由此可以看出strlen函数的返回值类型是size_t类型的 库函数下的strlen #include<stdio.h> int main() { char arr[20...

    Strlen函数详解

    函数介绍

    strlen函数的函数原型
    size_t strlen( const char *string );
    
    • 由此可以看出strlen函数的返回值类型是size_t类型的
    库函数下的strlen
    #include<stdio.h>
    int main()
    {
    	char arr[20] = "abcdef";
    	int len = strlen(arr);
    	printf("%d", len);
    	return 0;
    }
    
    • 打印的结果为6,strlen是不会计算\0的长度的,strlen函数遇到\0就会停止下来
    下面来看一个代码
    #include<stdio.h>
    #include<string.h>
    int main()
    {
    	char arr1[] = "abcdef";
    	char arr2[] = "abc";
    	if (strlen(arr2) - strlen(arr1) > 0)
    		printf("arr2>arr1");
    	else
    		printf("arr2<arr1");
    	return 0;
    }
    
    • 上面的代码打印的结果是arrr2>arr1,但是在我们看来,strlen(arr1)的大小为6,strlen(arr2)的大小为3,那么为什么会出现strlen(arr2)-strlen(arr1)>0的结果呢?
    • 原因在于,我们在上面已经提到了说strlen函数的返回值类型是size_t类型,也就是无符号的整数类型,无符号类型是大于等于0的,两个strlen的返回值类型都是size_t类型的,那么两个size_t类型的数字进行相减的结果同样也是size_t类型的,那么返回值的类型也就是size_t类型的了
    • 所以在使用strlen函数的时候,一定要注意strlen函数的返回值类型是size_t类型的,不然的话,可能会容易出错

    模拟实现strlen函数的三种方法

    • 我们在进行模拟实现的时候,可以把strlen函数的返回值类型给成int类型,也可以把他的返回值类型给成size_t类型的,都说的通,使用int类型的话,在有些情况下,可能会更加准确,就比如说是上面的那种情况,使用size_t类型确保了返回值都是正数,所以说,都说的通
    1.计数器的方法
    #include<stdio.h>
    #include<assert.h>
    int my_strlen(const char *str)
    {
    	assert(str);
    	int count = 0;
    	while (*str != '\0')
    	{
    		count++;
    		str++;
    	}
    	return count;
    }
    int main()
    {
    	char arr[] = "abcdef";
    	int len = my_strlen(arr);
    	printf("%d",len);
    	return 0;
    }
    
    
    2.递归的方法
    #include<stdio.h>
    #include<assert.h>
    int my_strlen(const char* str)
    {
    	assert(str);
    	if (*str == '\0')
    		return 0;
    	else
    		return 1 + my_strlen(str + 1);
    }
    int main()
    {
    	char arr[] = "abcdef";
    	int len = my_strlen(arr);
    	printf("%d", len);
    	return 0;
    }
    
    
    3.指针相减的方法
    #include<stdio.h>
    #include<assert.h>
    int my_strlen(char* str)
    {
    	assert(str);
    	char* ret = str;
    	while (*str != '\0')
    	{
    		str++;
    	}
    	return str - ret;
    }
    int main()
    {
    	char arr[] = "abcdef";
    	int len = my_strlen(arr);
    	printf("%d", len);
    	return 0;
    }
    

    strlen函数的注意事项

    • 字符串需要以\0作为结尾,strlen函数返回的是在字符串中\0前面出现的字符个数(不包含\0)
    • 参数指向的字符串必须要以\0作为结束
    • 注意函数的返回值类型是size_t类型
    • 模拟实现
    展开全文
  • strlen函数详解

    2021-03-04 09:49:42
    strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。char aa[10];cout<char aa[10]={...
  • 这篇文章介绍的内容是关于PHP中 strlen() 和 mb_strlen() 的比较 ,有着一定的参考价值,现在分享...strlen()-用来获取字符串长度int strlen ( string $string ) 返回给定的字符串 string 的长度。 mb_strlen — 获...
  • c语言strlen函数的使用方法是什么

    千次阅读 2021-05-19 06:16:51
    c语言strlen函数的使用方法是什么发布时间:2020-08-20 11:54:33来源:亿速云阅读:116作者:小新小编给大家分享一下c语言strlen函数的使用方法是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!...
  • strlen函数原理

    2021-08-02 17:38:30
    原理为while(*s++!=’\0’) cnt++; 首先需要了解一些基础知识: ...也就是说 也就是说strlen函数在遇到\0时就停止计数(即遇到ASCII码为0时),由于存储形式为ASCII码,0的ASCII码为48,所以遇到数字0
  • 利用函数实现strlen函数的功能。 #include <stdio.h> #include <string.h> size_t mstrlen(const char *s) { if(s == NULL){ return 0; } int len = 0; while(*s++ != '\0'){ len++; } return...
  • 今天偶然看到了一个实现strlen函数的方法,也实际练习了一下,挺有意义的,其实现的一些思想值得学习,记录一下吧。我这里除了写两个比较巧妙的递归实现之外,也写了另外一种常规的方式。传说常见的一个笔试题:不...
  • 编写一个C语言程序模拟实现strlen函数.算法strlen函数功能是计算字符串中字符的个数.(除\0外)而字符串本身就是一个字符数组,只不过末尾以\0结束.因此,我们只需遍历除\0之外的所有字符即可.有三种方法可以解决这个...
  • strlen函数说明。 int strlen ( string $string ) 在这篇文章,我们可以知道strlen函数是通过Zend Engine定义的。函数的定义可以在这里查看。 在这里也给出函数的源码: ZEND_FUNCTION(strlen) { char *s1; int ...
  • c语言strlen函数C and C++ programming languages provide the strlen() function in order to calculate or return the size of the given string or char array. String and char array is the same data type in ...
  • strlen函数的三种实现方式 1. strlen函数介绍 ​ strlen(string length)是C语言标准函数库中的标准函数,其功能是:计算字符串的长度,strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头...
  • 2 函数原型: size_t strlen(const char *s); 3 功能:指定计算字符串s的长度,不包含字符串结束符’\0’ 4 参数: s:字符串首地址 5 返回值: 字符串s的长度,size_t为unsigned int 类型 易错代码一 #include &...
  • C语言实现三种strlen函数

    千次阅读 2020-11-10 19:46:34
    #include<stdio.h> #include<string.h> int main() { char* p1 = "abc";... char* p2 = "abcdef";... if (strlen(p1) - strlen(p2) >...原因是strlen这个函数返回的是size_t类型的数,所以两个返回的数相.
  • 字符串函数strlen(1)strlen函数(2)strlen的使用a.代码b.运行结果(3)模拟实现strlen函数a.代码b.运行结果(4)注意:2.字符串函数strcpy(1)strcpy函数(2)strcpy的使用a.代码b.运行结果c.错误举例(3)模拟实现strcpya.代码...
  • C/C++语言函数之strlen函数用法

    千次阅读 2020-06-02 19:07:57
    **函数原型** size_t strlen(const char *string);
  • strlen函数在c语言中的用法是什么

    千次阅读 2021-05-18 13:12:00
    strlen函数在c语言中的用法是c语言库的一个函数,包含在[string.h]中。它用于计算字符串中的元素数,即从数组头开始计数,直到满足字符串结束符[\0],计数结果不包括[\0]。c语言strlen函数用法:Strlen是一个C语言...
  • strlen函数一般用在字符数组求解,一般需要初始化,例如 char a[]={“hello”};或者char a[]={‘h’,‘e’,‘l’,‘l’,‘o’,’\0’}; length函数一般与size函数可以相互转化,一般用string型定义字符串。 例如:...
  • 众说周知strlen函数是用来计算字符串长度的函数,它的使用需要应用到头文件 #include<string.h> #include<stdio.h> #include<string.h>//最纯正的味儿 int main() { char l[10]; int m; ...
  • C++中strlen函数

    万次阅读 2019-03-18 09:55:08
    strlen返回字符数组中有效元素的个数,而不是字符数组的容量。 #include&lt;iostream&gt; #include&lt;cstring&gt; using namespace std; int main() { char c[20]; string s="1234 ...
  • strlen函数与sizeof的区别,C语言strlen与sizeof的区别详解 对于 strlen 和 sizeof,相信不少程序员会混淆其功能。虽然从表面上看它们都可以求字符串的长度,但二者却存在着许多不同之处及本质区别。 strlen strlen ...
  • 头文件中,其中有个strlen函数,是用来计算字符串长度的函数。 strlen函数的原型: size_t strlen( const char *string ); 参数是一个const修饰的字符串,返回值是size_t。 size_t类型的返回值是因为统计字符串的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 254,230
精华内容 101,692
关键字:

strlen函数

友情链接: fotjle.rar