首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个strlen使用有关问题

2012-02-12 
一个strlen使用问题#includestdio.h#includestring.hvoidmain(){charss[7]10\0120\0 inta,basiz

一个strlen使用问题
#include   <stdio.h>
#include   <string.h>

void   main()
{
char   ss[7]   =   "10\0120\0 ";
int   a,   b;
a   =   sizeof(ss);
b   =   strlen(ss);
}

为什么b=4?   vc6.0的结果

高手能否讲讲。

[解决办法]
\0是结素符号 STRLEN求长度 是不计算\0的
[解决办法]
\012 为一个换行符 \0为结束
所以长度4就是 '1 ', '0 ', '\012 ', '0 ';
[解决办法]
"10\0120\0 "中\012是指八进制的12,也即是整数10,占一个字节
因此ss的内容应该是 '1 ', '0 ',10, '0 ',0,也即字符串的长度为4
[解决办法]
char ss[7] = "10\0120\0 ";
==>
字符1, 0, \0120(表示一个字符, 其值为120), 0.
所以strlen(ss)=4
[解决办法]
谭浩强C程序设计第二版讲转义字符时有\ddd和\xhh两种转义字符.
\ddd 为1到3位8进制数所代表的字符
\xhh 为1到2位16进制数所代表的字符
都是用ASCII码表示一个字符.
\012转换成十进制ASCII码为10即\n 代表换行.

热点排行