c语言关于strlen问题 求字节数

strlen("\01\xa")这样运行结果为2strlen("\0\xa")这样运行结果又为0了,strlen("\012\xa")这样依旧为2。弄不懂了,哪位大仙能给... strlen("\01\xa") 这样运行结果为2
strlen("\0\xa")这样运行结果又为0了,
strlen("\012\xa")这样依旧为2。弄不懂了,哪位大仙能给我讲解下这方面的知识 谢谢
展开
 我来答
sxsy556
2011-11-06 · TA获得超过1284个赞
知道小有建树答主
回答量:1037
采纳率:0%
帮助的人:656万
展开全部
解释:
\后面加上一些特殊的值,表示一个整体是转义字符
第一个\01 \012这个\后面的0是表示一个8进制的,真正的8进制值是1或者12,与\组成一个整体,代表一个字符的
而如果没有后面的字符,只剩下一个\0,那可就要注意了,这不是什么八进制数据了,这是代表一个结束符号,主要用在字符串中的,虽然也是一个转义字符,也被看做一个字符的。
但不一样的。
而\后面的那个x,是代表16进制的。与8进制描述一样啊
第一个2很好理解,而第二个中为0,就是因为\0结束了后面的东西,而\0又不算在字符串中,实际就是\0前面没有字符串,所以统计下来是0哦
那第三个就不用说了吧。
V亮剑
2011-11-06 · TA获得超过288个赞
知道小有建树答主
回答量:263
采纳率:0%
帮助的人:94.1万
展开全部
strlen()这个函数是用来求字符串的长度,而字符串最后一个字符是 '\0' ,编译器自动加的,这样strlen()函数就是从第一个字符开始一直记数到 '\0' 结束
例如:char ch[]={'a','b','c','\0','c','e','f'}; 内存里就是相当于char ch[]={'a','b','c','\0','c','e','f','\0'};
用strlen(ch) 得到的结果就是 3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hxf秦时明月
2011-11-06
知道答主
回答量:13
采纳率:0%
帮助的人:8.9万
展开全部
strlen()本身是求字符串中有效字符的长度的,而有效字符长度由字符串中的第一个\0确定的,
还有就是\0后面的3为表示8进制,\x后面的两位表示16进制,C语言中他可以自行判断这些东西,这就要求你自己也要能掌握怎么去判断。对于8进制和16进制的表示有两种,都有不同的含义。
\0,\x分别是8,16进制的字符表示方式,就是上面讲的,他表示的是字符。而%o,和%x分别是他们的输出格式,就是用在printf("%o",a),printf("%x",b),
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雨雁菱06M
2011-11-06 · TA获得超过2040个赞
知道小有建树答主
回答量:944
采纳率:100%
帮助的人:833万
展开全部
\在“”里面表示控制符 \0XX表示八进制
也就是说你第一句和第三句的\01和\012其实是八进制的1和八进制的12的意思而不是\0这个字符串末尾符
而第二句由于\0后面没东西了计算机认为就是字符串截止符了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
clitoriscn
2011-11-06 · TA获得超过3628个赞
知道小有建树答主
回答量:3258
采纳率:0%
帮助的人:1534万
展开全部
strlen是循环检查到有\0结束为止
你哪个\01,\012都是一个数字,所以不会结束。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式