C语言中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'结束,但不包括'\0',这个与sizeof()不一样。
对于用双引号引起来的字符串,系统默认最后一位字符为'\0',如你自己定义的:
char a[]="china";
char b[]={"china"};
另外,数组初始化还可以是一个字符一个字符赋值,如:
char c[]={'c','h','i','n','a'};
char d[]={'c','h','i','n','a','\0'};
但系统不会自动给你在最末位添加'\0’
所以在统计char c[]={'c','h','i','n','a'}时,统计到a时,系统还没找到\0,所以会继续统计,直到找到'\0'为止。所以就有你第三个值为11的情况,这个根据不同的运行环境而定。

  1.   char str[]="ab
    \012\\\""

    字符1: 转义字符:水平制表符 ,其ASCII 值9(十进制)

    字符2、3:ab

    字符4:
    转义字符,换行符,其ASCII 值10(十进制)

    字符5:\012 转义字符,其中012是8进制数,其ASCII值 同
    .

    字符6:\\ 转义字符 反斜杠\,其ASCII值 92(十进制)

    字符7:\" 转义字符 双引号",其ASCII值 34(十进制)

2.  printf("%d
", strlen("IBM
012\1\\"));

      字符1、2、3: IBM 

      字符4:
 转义字符

      字符5、6、7:012

      字符8:\1 其ASCII值 1(8进制).

      字符9:\\ 转义字符 反斜杠\,其ASCII值 92(十进制)

3. printf("%d
",strlen("\"\065\xff
"));

       字符1:  转义字符:水平制表符 ,其ASCII 值9(十进制)

      字符2:\" 转义字符 双引号",其ASCII值 34(十进制)

      字符3:\065 ,代表字符5,其中065为8进制 格式,其ASCII为53(十进制)

       字符4:\xff (这个我不知道怎么解释,请其它老师帮助解释)

       字符5:
 

4.   printf("%d
",strlen("stop\0
\""));

      

       字符1、2、3、4:stop

       因为strlen()函数遇到\0 就结束了,后面的字符就不去判断了。

       C语言中的字符串 是用\0作为 结束符。

希望我的解答 对你有所帮助,很高兴和你一起讨论和学习C语言。



C里有转义符,比如象\\(表示\符号本身),\"(表示"本身)、\t(跳格符),\n(换行),还有\ddd(8进制表示) 以及\xdd(16进制字符),这些都视为单个字符,所以象你第一题就是
\t
a
b
\n
\012
\\
\"
一共这7个字符,后面的都是一样的,另外 strlen是计算\0之前的字符长度,所以象第4题\0前有4个字符,那长度就是4

统计字符串长度的函数,返回一个是指定整形数字,
从开头数数,多少个字符就返回对应的数值,
常用在计算字符串长度,字符数组的个数,指针字符串的长度等!

从开始数,直到遇到字符'\0','\0'之前有几个字符,就返回几


c语言中strlen、str、len分别指的是什么意思?
strlen -- 计算字符串长度的库函数名。str -- 通常,程序员喜欢用它作 字符串 变量名。它是 string(英文词 字符串 的缩写)len -- 通常,程序员喜欢用它作 变量名。它是 length(英文词 长度 的缩写)。例如:char str[20]="I am a student";int len;len = strlen(str);printf("the ...

C语言中,sizeof和strlen都是表示字符串长度的吗?谁能告诉我它们两者的区...
sizeof 计算的是数据在内存中存放的长度,单位是“字节”,可以对任何数据类型做运算,而且它是一个运算符(和+、-、*、\\类似);当对字符串计算时,包含末尾的"\\0";当对字符数组操作时,返回的是数组的总的长度,也就是当把数组作为参数传递给sizeof时是不会退化的。strlen 计算的是字符串的长...

在C语言中Strlen是什么意思?
strlen为C语言库函数,包含于string.h中,作用为计算一个字符串(字符数组)中元素的个数,即从数组头部计数,直到遇到字符串结束符\\0为止,计数结果不包括\\0。需要注意的是,strlen并不是绝对安全的,如果在传入的字符数组的合法范围,不存在结束符\\0,那么strlen函数会一直访问下去,超出数组范围,即出现...

C语言中sizeof与strlen的区别是什么
1、指代上的区别 (1)sizeof:用来获取字符串长度的导引,是处理字符串的重要工具。(2)strlen:做的是一个计数器。2、用法上的区别 (1)sizeof:sizeof( type_name ); \/\/ sizeof(type); 在编译时有效,而不是在运行时有效。(2)strlen:extern unsigned int strlen(char *s); 返回s...

c语言strlen函数问题
strlen实际上是,从参数表示的地址往后找,找到第一个'\\0',即串尾。然后计算'\\0'至首地址的“距离”,即隔了几个字符,从而得出长度。char x[]={0xBC,0xDD,0xCA};中,实际上是定义了一个char型的数组,而由于x[0],即0xBC开始往后找,一直到0xCA,都没'\\0',所以会继续往后。当然,...

文章转载自 - C语言中sizeof与strlen的区别是什么
一、指代不同 1、sizeof:用于获取字符串的长度,是处理字符串的重要工具。2、strlen:所作的是一个计数器的工作。二、规则不同 1、sizeof:可用于任何变量名、类型名或常量值,当用于变量名(不是数组名)或常量时,不需要用圆括号。2、strlen:从内存的某个位置(可以是字符串开头,中间某个位置...

C语言中sizeof和strlen函数区别在哪?
1、操作 strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\\0'停止。而sizeof()返回的是变量声明后所占的内存数,不是实际长度。2、参数类型 sizeof可以用类型做参数,strlen...

c语言strlen函数用法
strlen是求字符串长度的函数。函数原型:unsigned int strlen(char *s)。参数:s是char类型的指针,指向要求长度的字符串。返回值:返回字符串的长度,返回类型是无符号整型。strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)...

strlen()函数是什么意思?
strlen(char *)作用:检测字符串实际长度。如:char s[]="1234567";int a=strlen(s);\/\/a=7 实际上strlen(char *)检测的是'\\0',strlen(char *)碰到'\\0'就返回'\\0'以前的字符数。又如:char f[]="123456\\01111";int b=strlen(f);\/\/b=6,因为遇到了'\\0'...

c语言怎么计算字符长度?
在C语言中,可以使用strlen函数来计算字符串的长度。解释:使用strlen函数计算字符串长度 在C语言中,要计算字符或字符串的长度,常用的方法是使用标准库中的strlen函数。这个函数可以计算从字符串的起始地址到遇到第一个终止符'\\0'的字符数量。换句话说,它可以返回字符串中的字符数量。strlen函数的用法 ...

安乡县19392319574: C语言用函数strlen计算 -
姜莺西沙: C语言规定,对于没有明确初始化的部分,默认初始化为0, 这个和字符串结束符\0的值是相同的. 于是str中存的就是 string加上6个\0 而strlen是到\0结束计算的,这样,字符串长度就是6 选A

安乡县19392319574: C语言中strlen()函数的意思? -
姜莺西沙: strlen()是读取字符串长度的意思,举例如下 char a[]={'a','b','c'}; return strlen(a); 返回字符串a的长度,是3. 需要注意的是,strlen()函数需要<string.h>的头文件. 如有疑问请您追问.

安乡县19392319574: c语言中strlen是什么意思 -
姜莺西沙: strlen:计算字符串长度的库函数名. str:通常,程序员喜欢用它作 字符串 变量名.它是string(英文词字符串的缩写). len:通常,程序员喜欢用它作 变量名.它是 length(英文词长度的缩写). 例如: char str[20]="I am a student"; int ...

安乡县19392319574: 在C语言中strlen运算地长度是不是到'\0'就结束了呀?如char a[7]="A0\0A0\0.strlen(a)长度为2,为什么 -
姜莺西沙: strlen是在遇到第一个'\0'就结束的.char a[7] = "A0\0A0\0",A0之后出现了第一个\0,这样strlen当然统计的结果为A和0,自然就是2喽

安乡县19392319574: c语言中strlen是什么意思 -
姜莺西沙: 是一个标准库函数.功能:计算字符串s的长度,但是不包括'\0'在内.当头文件包含了#include <string.h>该函数就能使用了.例如 char *s="hello";int i=strlen (s);printf("%d\n",i);输出的为5 因为字符串"hello"一共有五个字符.

安乡县19392319574: C语言中的strlen函数 -
姜莺西沙: strlen()只是统计字符串的长度,统计到'\0'结束,但不包括'\0',这个与sizeof()不一样.对于用双引号引起来的字符串,系统默认最后一位字符为'\0',如你自己定义的:char a[]="china"; char b[]={"china"}; 另外,数组初始化还可以是一...

安乡县19392319574: C语言数组问题strlen怎么用 -
姜莺西沙: 这个是库函数,就是求这个字符串的长度,以'\0'作为结束符,不计算结束符. 你当前的strlen(st) 输出是 5

安乡县19392319574: strlen 是什么意思 -
姜莺西沙: C语言中strlen是求字符串长度的函数,其完整声名为:int strlen(const char* str);其中str为待求长度的字符串,要使用这个函数必须在程序开始处加上#include ,你清楚了吗?

安乡县19392319574: C语言中strlen函数的用法问题,望高手指点!!! -
姜莺西沙: 如果不指定大小,这个数组就只会有4个元素,没有结尾的'\0'. strlen的工作原理是不断向后看,直到一个'\0'字符. 因此第一个程序的运行结果是不可预测的,取决于之前内存里的残留数据. 而第二个程序,数组的剩余项均被赋成0

安乡县19392319574: 在C语言中,strlen("Hello!")的值是 -
姜莺西沙: 答案是6.............虽然那个字符串完整应该是HELLO!\0,但是strlen函数只统计空结束符前面的个数

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网