首页 > 其他分享 >c语言strlen(c语言strlen计算空格吗)

c语言strlen(c语言strlen计算空格吗)

时间:2022-10-24 19:00:57浏览次数:55  
标签:char 语言 字符 int 空格 数组 字符串 strlen


c语言里面的strlen是干什么的

strlen()是计算字符串长度的函数,将返回从字符串首到'\0'之间总共的字符个数,原型为:extern unsigned int strlen(char *s);

所以除非你的a[0]本身就是一个字符串,否则不能这样使用

另外也可以用这个函数计算从字符串任意位置到'\0'之间的长度

比如:定义char s[20] = {"abcdefg"};

那么strlen(s)将返回7;而strlen(&s[3])的结果是4,注意这里是“&s[3]”是从第三个字符所在的地址开始计算长度。

看一下百度百科中对函数strlen()的解释,应该对你会有帮助的。计算字符串长度。

再看看别人怎么说的。

再看看别人怎么说的。

C语言中strlen什么用法

strlen为C语言库函数,包含于string.h中,作用为计算一个字符串(字符数组)中元素的个数,即从数组头部计数,直到遇到字符串结束符\0为止,计数结果不包括\0.

其声明为:

unsigned int strlen(char *s);

比如定义字符串:

char *p = "this is for testing";

strlen(p);

返回的结果就是p中元素的个数,即19。

需要注意的是,strlen并不是绝对安全的,如果在传入的字符数组的合法范围内,不存在结束符\0,那么strlen函数会一直访问下去,超出数组范围,即出现越界访问。

所以使用strlen时,程序员必须确认参数字符数组中包含\0值,否则会出现不可预知后果。strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值。

原型:extern unsigned int strlen(char *s);,在Visual C++ 6.0中,原型为size_t strlen( const char *string );,其中size_t实际上是unsigned int,在VC6.0中可以看到这样的代码:typedef unsigned int size_t;。

头文件:string.h

格式:strlen (字符数组名)

功能:计算字符串s的(unsigned int型)长度,不包括'\0'在内

说明:返回s的长度,不包括结束符NULL。

因为字符串是以字符'\0'结尾的,但是这个'\0'在我们的字符串是隐藏的,我们看不到。实际上是有的.例如:

char a[4]="abc";//这里数组的元素个数至少应该是4,否则此字符串不叫字符串了,只能叫字符数组了。

strlen判断一个字符串的结束就是以其末尾的'\0'为界限。其实现代码可以模拟为以下:

int strlen(char *p)

int i=0;

while(*p++)i++;

return i;

所以他是不包括'\0'这个字符的。__cdecl strlen(const char *);

计算字符串的实际长度(不含字符串结束标志‘\0’),并将计算结果作为函数值返回。简单的跟你说strlen是算长度的,比如,你定义int a[10];

如果运算sizeof(a),会返回40.因为一个int类型占了4个字节的内存空间,10个就占了40字节

如果运算strlen(a),返回不一定是40,这要看你在a数组里面用了多少空间,如果用了4个字节,就返回4,如果用满就是返回40了尾的'\0'。

strlen的工作原理是不断向后看,直到一个'\0'字符。

因此第一个程序的运行结果是不可预测的,取决于之前内存里的残留数据。

而第二个程序,数组的剩余项均被赋成0

标签:char,语言,字符,int,空格,数组,字符串,strlen
From: https://blog.51cto.com/yetaotao/5790951

相关文章

  • c语言学习资料
    在大二学习了c语言基础教程不请出以后应看先什么资料要是想考二级的话就看看c公共基础和南开一百题我保证只要这两个你看会了七成就能过二级要是想深入学习我就不了解了。......
  • c语言关键字(c语言关键字volatile)
    什么是C语言关键字关键字又称保留字,是c语言预定义的单词,在程序中有不同的使用目的,在定义标识符的时候,不能使用这些关键字,否则在编译时会产生莫名其妙的错误,C语言由ANSI定义......
  • c语言helloworld代码(c语言helloworld代码编写)
    C语言:求代码#includeintmain()inta,b,c,d,t,max,min;printf("Enterfourintegers:");scanf("%d%d%d%d",&a,&b,&c,&d);if(ad)min=d;printf("Largest:%d\nS......
  • 自然语言处理学习笔记-lecture09-篇章分析
    自然语言处理的处理单元分为字(编码、输入法),词、短语(形态分析、汉语分词、词性标注、词义消歧、命名实体识别等),句子(句法分析、语块分析、语义角色标注),篇章(机器翻译、......
  • go语言基础语法
    声明变量 varidentifiertypevar:声明变量关键字identifier:变量名称type:变量类型批量声明及初始化 var( name string="dcl" phonein......
  • c语言爱心代码(c语言画爱心的代码)
    html代码和c语言等编程语言有什么联系吗?HTML叫做超文本标记语言(标准通用标记语言下的一个应用)或超文本链接标示语言,是目前网络上应用最为广泛的语言,也是构成网页文档的主......
  • c语言数组(c语言数组求平均值)
    C语言数组有哪些特点呢?一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型C语言中一维数组中的数组大小可以省略吗?C语言中一维数组中的数组大小是......
  • c语言异或(c语言异或符号)
    请帮我讲解一下C语言中的异或运算首先,我们看一下异或的原理:a = 3 ^ 5;3的二进制是0011,5的二进制是0101。异或发现两者的不同之处,所以a最终为0110b(4)。了解了异或的基本......
  • c语言面试题(C语言面试题库,快速排序非递归)
    什么是C语言C語言是1972年左右由DennisRitchie一??人在?????室(?稱AT&T)設?開發出?淼碾?腦程式語言.他??r與KenThompson?扇斯餐??UNIX作?I系統的發展,而UNIX作?I系統(是......
  • c语言循环语句(c语言循环语句switch)
    C语言中循环语句有哪些?C提供三种基本的循环语句:for语句、while语句和do-while语句。一.for循环for循环是开界的。它的一般形式为:for(;;)语句;初始化总是一个赋值......