LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 836|回复: 8

请教c语言入门问题,很急,在线等。

[复制链接]
发表于 2004-5-21 14:13:02 | 显示全部楼层 |阅读模式
我定义了一个字符数组,具体如下:
char buffb[]={'M','#','\x00','+','\x01','M','E','N','U',' ','L','O','C','A','L',' ','I','P',':',' ','#','1','9','2','.','1','6','8','.','0','2','3','.','0','0','1','\n'};
然后用int i=strlen(buffb);来获得buffb的数组长度。
结果得到的i是2.
请问这是为什么???
怎么能得到真正的数组长度?
另外,我这么定义可以么?
char buffb[]={"M#\x00+\x01MENU-LOCAL IP:  #192.168.023.001\x0d"};
谢谢!!
发表于 2004-5-21 15:01:16 | 显示全部楼层
char buffb[]={'M','#','\x00'……

请看一下字符串的定义。
发表于 2004-5-21 15:14:45 | 显示全部楼层
没错,strlen函数是用来获取字符串的实际长度(也就是去除'\0')。
'\x00'也没有错啊,这是十六进制表示数。
发表于 2004-5-21 15:20:41 | 显示全部楼层
字符串以'\0'结尾,只要字符数组中有一个元素是零,它就自然会被strlen()当作是字符串的结尾。
其实只要是使用了字符数组,自然就知道元素个数,不需要用strlen()来获取字符数组的长度。
发表于 2004-5-21 15:26:20 | 显示全部楼层
kj501斑竹提醒得好,我都把这点忘了~~~~晕~~~~
 楼主| 发表于 2004-5-21 15:41:40 | 显示全部楼层
明白了。。
谢谢!!!!
 楼主| 发表于 2004-5-21 15:48:22 | 显示全部楼层
请问“既然使用了字符串,就自然知道长度。“这句话应该如何理解??
有什么其他的方法么?
我这里的字符串是程序动态获得的。所以我也不知道具体的长度。。
发表于 2004-5-21 16:12:22 | 显示全部楼层
要是非得放个00在里头,就只好自己写个strlen了,不能用0做默认结束符。

_____________
|           |
|  偶是菜鸟 | *----*
|___________|/ ^  ^ \
            \/| .  . |\
             \( (oo) )
             <\<~~  \
             _(_~A___)_
发表于 2004-5-21 16:15:30 | 显示全部楼层
晕,这论坛居然自动删除空格,可怜偶的签名档啊。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表