黑马程序员技术交流社区

标题: 请教OC字符串的问题? [打印本页]

作者: JiangHG    时间: 2015-3-16 10:25
标题: 请教OC字符串的问题?
代码如下:
char *str1  = "hello 测试";
NSLog(@"str1:%s size: %lu ",str1,strlen(str1));
这两行代码的输出结果:
2015-03-16 10:21:59.500 a.out[705:28759] str1: size: 12
为什么str1输出是空呢,而且大小12是怎么算出来的呢?
作者: hxd4241    时间: 2015-3-16 11:01
char 不是字符么?
作者: Damson    时间: 2015-3-16 11:26
首先你定义的是字符指针,输出方式错误。其次 "hello 测试" 一个字符是一个字节,一个汉字是三个字节,再加上中间那个空格 加起来就是12,你再好好数数。
作者: yafengxn    时间: 2015-3-16 11:30
前一个问题不知道,后一个问题:一个汉字三个字符hello(5)+空格(1)+汉字(2*3)= 12
作者: yafengxn    时间: 2015-3-16 11:33
Damson 发表于 2015-3-16 11:26
首先你定义的是字符指针,输出方式错误。其次 "hello 测试" 一个字符是一个字节,一个汉字是三个字节,再加 ...

请问下,输出方式,怎么错了?你的意思是用%@?
作者: Damson    时间: 2015-3-16 11:37
yafengxn 发表于 2015-3-16 11:33
请问下,输出方式,怎么错了?你的意思是用%@?

字符指针 存的是地址,要把字符数组和字符指针区分开,你查下资料就晓得了,或者C语言学习视频中都有的。
作者: JiangHG    时间: 2015-3-16 13:13
Damson 发表于 2015-3-16 11:26
首先你定义的是字符指针,输出方式错误。其次 "hello 测试" 一个字符是一个字节,一个汉字是三个字节,再加 ...

输出方式怎么错误了,%@肯定是不对的都编译不过,难到C语言的字符串只能用printf输出吗。
作者: JiangHG    时间: 2015-3-16 13:15
Damson 发表于 2015-3-16 11:37
字符指针 存的是地址,要把字符数组和字符指针区分开,你查下资料就晓得了,或者C语言学习视频中都有的。 ...

存的的就是那个字符串的地址吗,之后把这个地址里面的东西写到缓冲区在打印到屏幕,用printf都是没有问题的!
作者: hellooc    时间: 2015-3-16 13:24
关于第一个问题好像是你输出的字符串中包含了中文,我记得看视频中有这样的情况出现。第二个问题就简单多了,strlen(str1)方法返回的是str1的长度,前面的大婶们说得很明白了

作者: lxiaohei103    时间: 2015-3-16 13:31
一个汉字是3个字节 测试是6个字节
字母一个是一个字节 加上空格是6个字节
作者: yyx1992    时间: 2015-3-16 19:16
方法一:用printf输出字符串
方法二:用NSString创建字符串,然后再用NSLog输出
作者: JiangHG    时间: 2015-3-17 09:45
yyx1992 发表于 2015-3-16 19:16
方法一:用printf输出字符串
方法二:用NSString创建字符串,然后再用NSLog输出 ...

嗯,已经解决了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2