c语言编程strlen函数问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 14:59:49
void main()
{
char str[]="abc\\\t\xa6\'";
printf("%d\n",strlen(str));
} (输出多少?为什么呢?)

void main()
{
printf("%d\n",strlen("'\\rtert\379abc'"));
}(输出是多少呢?为什么呢?)

大家会的一定要详细的讲解啊!我真的不懂,搞了很久都不懂!
感激不尽!!!!!!!!!!!!!

建议你多看看转义的一些内容。找了个链接
http://zhidao.baidu.com/question/33418354.html

第一问:
abc\\\t\xa6\'
a,b,c三个字符
\\,第一个为转义的意思,总体就是一个\字符
\t,表示制表符
\xa6,表示一个ASCII码为0xa6的字符
\',表示单引号这个字符
总共加起来就是7个字符。(a,b,c,\,制表符,ASCII码为oxa6字符,单引号)

第二问:
'\\rtert\379abc'
',单引号
\\,第一个\为转义的意思,总体是一个\字符
rtert,这是五个字符r,t,e,r,t
\37,对于八进制的可以是三个数,而后面那个数字是9超过7,所以后面的9是单独的字符。\37表明ASCII码为37(八进制,对应于十进制的31)
9abc,为四个字符,
',单引号
总共13个(单引号,\,r,t,e,r,t,\37,9,a,b,c,单引号)

如果二例中
'\\rtert\3719abc' 就是多了一个1,它也是13个字符。
因为\371也只是一个字符