问一个弱弱的问题新手~

TANKTHT 2005-10-09 11:44:24
main()
{ char c[]="\t\v\\\0will\n";

printf("%d",strlen(c));


}
请问为什么这里strlen函数会输出3?能不能解释一下,谢谢了~
...全文
130 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
KannyFu 2005-10-10
  • 打赏
  • 举报
回复
后面是蒙你的:)中国人就喜欢这样出考题
xtaddqqug 2005-10-10
  • 打赏
  • 举报
回复
char c[]="\t\v\\\0will\n";
\t +1
\v +1
\\ +1
\0 =结束
\t,\v,\\,\0这四个都是转意字符,其中\0在PC的内存中表示二进制的0,而不是字符'0',在C语言中,0表示字符串结束,有的编译器(或者库)在计算字符串长度时要带上这个结束标志,有得则不带,在您的例子中,您的字符串是占四个字节的内存,但你的有效长度是3
antijpn 2005-10-10
  • 打赏
  • 举报
回复
转新手乐园
TANKTHT 2005-10-09
  • 打赏
  • 举报
回复
呵呵谢谢大家,我彻底懂了~~
TANKTHT 2005-10-09
  • 打赏
  • 举报
回复
谢谢我懂了,但是还有些疑问,\0结束后的will\n,计算机还读吗?有什么用呢?
snowbirdfly 2005-10-09
  • 打赏
  • 举报
回复
\0will
其中\0表示结束符~~
所以\0will表示长度为0
\\\0will
就相当于\(因为\0will表示长度为0,所以相当于没有,\\表示一个\)
所以为1,再加上一个\v一个特殊符号所以输出长度为2
然后\t转义字符为1
所以为3啊~~~

captainivy 2005-10-09
  • 打赏
  • 举报
回复
这个串只有三个字符啊,分别是\t\v\\(\\其实就是是‘\’),注意串的结束标志是\0。
K 2005-10-09
  • 打赏
  • 举报
回复
char c[]="\t\v\\\0will\n";
\t +1
\v +1
\\ +1
\0 =结束

33,319

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧