c语言关于strlen的一道题,应该很简单

char *p ="abc\101\0fghijk\0";
printf("%d",srelen(p));
结果为什么是4呢?能从考察的原理上详细讲一下嘛?新手麻烦了

第1个回答  2012-02-08
应为 C 语言规定字符串·以 0 (ASCII 0, 即 \0 结尾),
字符串 "abc\101\0fghijk\0" 第一个字符是 a, 第二个是不,第三个是 c, 第四个是 \101(即 ascii 码值为 101 的特殊符号), 然后是 \0 字符串结束符号。故字符串长度是4
第2个回答  2012-02-08
a 1
b 2
c 3
\101 4
\0 完了,
strlen是测试字符串长度,字符串是以\0为结尾的追问

\101 算一个长度么?为什么不以最后一个/0为结束符呢?麻烦了`新手呵

追答

NO \xxx表示1-3位8进制数字,
是右\ 不是/
这个东东应该在书上讲printf时会说明的,见转义字符

本回答被提问者采纳
第3个回答  2012-02-08
strlen 是以 \0 结束的
\101代表一个字符
所有共四个字符 a b c \101(查ASCII码)

c语言关于strlen的一道题,应该很简单
应为 C 语言规定字符串·以 0 (ASCII 0, 即 \\0 结尾),字符串 "abc\\101\\0fghijk\\0" 第一个字符是 a, 第二个是不,第三个是 c, 第四个是 \\101(即 ascii 码值为 101 的特殊符号), 然后是 \\0 字符串结束符号。故字符串长度是4 ...

C语言strlen判断字符长度题
记住转义字符规则就很简单了。这个里面包含 \\t \\" \\\\ \\n \\" \\065 \\0 8 A B \\0共计11个字符。 注意 不是解析里面说的10个字符。还有一个结尾的结束符\\0 统计字符串长度时 到第一个\\0截止。于是实际统计的是 \\t + \\" + \\\\ + \\n + \\" + \\065结果为6 ...

c语言问题 strlen函数问题
你的输入法没有问题的话,\\011会转义成ascii码为9的字符。也就是说你这个字符串应该是9个字符。教你一个最直接的方法,把我下面写的代码运行,就清楚了。include<stdio.h>#include<string.h>int main(void){ char f[]="123456\\01111",*p=f; printf("字符串长度len=%d\\n",strlen(f)...

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

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));...

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

c语言 strlen
while (s[strLen++]); 的执行是,先取出 s[strLen] 的值,然后 strLen 自加1。如果这个值为真(非0),则while继续重复前面的动作。这个循环的执行实质上是得到 s 中字符串的长度。因为字符串最后是以 0 作为结束。前面都是非 0, 所以 while 会一直执行到 s[strLen] 取出的是 0 值也就是...

c语言 strlen的问题
char b[30][] = ...看这个就明白了:char b[] = "aaaa";strlen(b); \/\/ 4 sizeof(b); \/\/ 5 原来的写法,gcc 是会报错的 你用的什么编译器?很糟糕啊 它忽略这个错误的结果,就是把 b[1] 和 b[2]。。。等等,在实际内存中连在一起了,没有存储 '\\0',字符串自然就超长了 ...

我碰到C语言中一个问题,就是用strlen测定字符串的长度,函数定义...
int test strlen(char *s) 这是一个等待调用的子程序 程序名为 strlen 调用的时候,给入与 括号里的相同类型变量 {char *p=s; 定义字符串变量 p 并把其地址的第一个给指针 s while (*p) 当指针没有指到最后一位时 p++; 字符串向后移动一位 return p-s; 返回值为字符串...

c语言strlen问题
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'

相似回答