读书人

一个strlen使用有关问题

发布时间: 2012-02-12 17:16:33 作者: rapoo

一个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 代表换行.

读书人网 >C语言

热点推荐