黑马程序员技术交流社区

标题: 关于strlen以及sizeof用法? [打印本页]

作者: smilejoke    时间: 2015-8-26 19:15
标题: 关于strlen以及sizeof用法?
  1. #include <stdio.h>
  2. void test()
  3. {
  4.     char str[ ]="ab\013\r\082\\\"";

  5. printf("%lu",strlen(str));

  6. }


  7. int main(int argc, const char * argv[]) {

  8.     char c[]="heima";
  9.     char d[]={'h','e','i','m','a'};
  10.    
  11.     printf("%lu\n",(sizeof(c) / sizeof(c[0])));
  12.     printf("%d\n",sizeof(d) / sizeof(d[0]));
  13.     printf("长度%d",strlen(c));
  14.     printf("长度%d",strlen(d));
  15.     printf("%s",d);
  16.     return 0;
  17. }
复制代码
这段代码执行后为什么xcode会输出如下6
5
长度5长度10heimaheimaProgram ended with exit code: 0
作者: 愿得一人心1111    时间: 2015-8-26 21:25
有什么问题么?


作者: tangbinbin    时间: 2015-8-27 08:15
过来学习下
作者: iphone    时间: 2015-8-27 09:26
长度和字符个数
作者: tr2e    时间: 2015-8-27 10:40
字符串和字符数组是不一样的 所有的字符串都是以 '\0' 结尾 自然会多一位
作者: tr2e    时间: 2015-8-27 10:49
最后一行 d 是个字符数组 可以用 %s 输出吗?
作者: tr2e    时间: 2015-8-27 11:00
strlen(d) 同样有疑问 可以这样对一个字符数组使用字符串的函数?
作者: 小腼腆不是错    时间: 2015-8-27 11:13
过来凑下热闹。
作者: flywithde    时间: 2015-8-27 16:49
char c[]="heima";//这句是定义一个常量字符串,字符串是以\0结束
char d[]={'h','e','i','m','a'};//这句是定义一个字符数组,最后没有\0
用%S是这样输出的:从给定的地址开始输出,一直遇到\0就结束,而d是存放在内存低地址,c存放在高地址,输出d的时候没有\0所以会把接下来的c也一同输出,遇到c的\0就结束输出




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