c语言strlen问题

1.字符串“abcd\tef\0g”的长度是()
2.执行以下程序段后的输出结果是(),系统为数组a开辟的字节数是()
char a[]="\t\018\\\"12";
printf("%d",strlen(a));
为什么第二题里面'\01'看做一个字符而不是看做'\0'结束呢?

补充:
注意两个问题并不相同:1是问字符串长度,2是问占用的内存空间。长度是不包括最后的'\0'的,占用空间需要考虑'\0'.
\0xxx 是8进制的表示方式,其中x为0-7,最多不超过3位,且值小于256
编译器解析的时候会采用最大贪婪算法,就是只要满足条件(\0后面不超过3个字符(在0-7之间)且值小于256)的就让他尽量长
所以"\018"是'\01' '8'
"\0g"是'\0' 'g'

1.abcd\tef\0g len=7
--------------------------------------------
'a' 'b' 'c' 'd' '\t' 'e' 'f' '\0'

2.\t\018\\\"12 bytes=8
--------------------------------------------
'\t' '\01' '8' '\\' '\"' '1' '2' '\0'
温馨提示:内容为网友见解,仅供参考
第1个回答  2020-04-26
#include<stdio.h>
#include<string.h>
void
main()
{char
str[]={'a','b','c',0,0};
char
a[5]={1,2,3,4,5};
printf("%d\n",strlen(str));
//结果为3
acsii码中的0表示结束符NULL
strlen(s)返回s的长度,不包括结束符NULL
printf("%d\n",strlen(a));
//
a数组的类型改为char,strlen是计字符串长度
}
第2个回答  2020-04-19
针对这两个问题
:
在strlen函数中
他传递的参数是char*类型
所以你的第二问
为什么编译不了就是出这,a为int
[5]类型编译器隐式转换成int*类型 ,由于与char*类型不匹配所以编译失败.
至于第一问题
:strlen函数是以0('\0')为结束标志,但不算进去,告诉计算机
这个字符串结束了。
第3个回答  2008-06-28
两个都是7
一楼的兄弟说得很对,不过第二个他可能数错了
要说的是'\01' 这个表示一个二进制数.
'\\' '\"'的第一个\是表示转义字符的意思..本回答被提问者采纳
第4个回答  2008-06-28
8,\0前的都是

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

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

为什么strlen()函数不返回0?
strlen()函数是C语言中的一个标准库函数,用于计算给定字符串的长度。这个函数返回的是字符串中字符的数量,不包括末尾的空字符('\\0')。因此,当您调用strlen()函数并传入一个空字符串(即该字符串只包含一个空字符)时,函数会返回0。这是因为在这种情况下,字符串没有任何字符,所以长度为0。以...

C语言:Strlen()函数你了解多少?
C语言:深入理解Strlen()函数C语言中的strlen函数是关键工具,它用于测量字符串的长度,但需注意其计算规则和用法。函数原型为size_t strlen(const char* str),传入的是字符串的地址,而非字符串本身。它从字符串首字符开始,直到遇到'\\0'终止符结束计数,但结果不包括'\\0'。举个例子,利用strlen计...

C语言用strlen(s)求字符串s的长度 char s[]="\\t\\v\\\\\\0will\\n"_百度知 ...
长度3。‘\\’是转义符号,和后面的字符或数字组合表示一个字符。这里‘\\0’表示结束符号0,字符串的长度就截止到这里。前面共有3个字符分别是'\\t','\\v','\\\\'。

c语言strlen用法
C语言中的strlen函数主要用于获取字符串的长度,但它在处理字符输入时,需要注意一个特殊情况。当我们使用scanf()函数从键盘接收字符时,遇到转义字符(\\)时,它会被当作普通字符处理,而非特殊字符。这意味着,如果你想在输入中输入一个转义字符,例如`\\n`表示换行,实际上你只能输入`\\`,因为`\\n`...

c语言 strlen
在C语言中,`strlen`函数的作用在于计算字符串的长度。当我们看到代码片段`while (s[strLen++])`时,其执行过程可以这样理解:首先,它会尝试获取`s`数组中`strLen`位置的字符值,然后将`strLen`自增1。这个过程会持续进行,只要当前字符非零(即不是字符串的结束标志0)。因为字符串是以0为结束标志...

C语言问题 关于strlen
a是首元素地址没错。但不是说有255位!首先printf中你少了个逗号...你可以尝试着把a中的字符打印出来检查一下。可以看到当i=255的时候,-1-255=-256,最低位的8个bit全部为0,在程序中被判定为'\\0',也就是字符串的结束符,这会使得在用strlen的时候只统计到该位为止的长度。除此之外,当i...

C语言中 strlen函数用法的问题
printf("%*d%*d\\n",strlen(firstname),strlen(firstname),strlen(sumame), strlen(sumame));这个是输出匹配的问题。举个例子 printf("%5d",5); 就会给你5个空间输出5,前面4个空格,然后输出5.printf("%*d",5,5);和上面一样,利用*匹配5控制输出宽度。就是四个空格5.同理上面的第一个...

C语言strlen问题,char a[] = {'a','b'}; strlen(a)的值?。。。_百度知...
strlen函数是对以0结尾的字符串计算长度的。所以你的程序这样改就可以了:char a[] = {'a', 'b', '\\0'};char b[] = {'a', 'b', '\\0'};char c[] = {'a', 'b', '\\0'};printf("%d,%d,%d\\n",strlen(a),strlen(b),strlen(c));...

相似回答