免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 4174 | 回复: 20
打印 上一主题 下一主题

请教关于字符数组长度的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-17 15:02 |只看该作者 |倒序浏览
对下面2个小程序的结果有点疑惑,请教各位为什么会出现这种差别,谢谢.
环境为AIX5.0 GCC编译器.
先看程序

  1. #include<stdio.h>
  2. #include<stdlib.h>

  3. int main()
  4. {
  5.         char   ca[102]
  6.         char   cb[51]="aa";
  7.         char   cc[51]="a";

  8.         printf("%d",strlen(a));
  9.         strcpy(ca,cb);
  10.         strcat(ca,cc);
  11.         printf("%d",strlen(a));

  12.         return 0;
  13. }
复制代码

结果为0,102.而下面的那个结果为0,3,想不明白为什么会出现这样的差别.

  1. #include<stdio.h>
  2. #include<stdlib.h>

  3. int main()
  4. {
  5.         struct tt{
  6.                char   ca[102]
  7.                char   cb[51];
  8.                char   cc[51];
  9.         }tt_d;

  10.         memset(&tt_d,0,sizeof(tt_d));

  11.         strcpy(tt_d.cb,"aa");
  12.         strcpy(tt_d.cc,"a");

  13.         printf("%d",strlen(tt_d.ca));
  14.         strcpy(tt_d.ca,tt_d.cb);
  15.         strcat(tt_d.ca,tt_d.cc);
  16.         printf("%d",strlen(tt_d.ca));

  17.         return 0;
  18. }
复制代码

[ 本帖最后由 iamfog 于 2006-9-17 20:23 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-09-17 16:07 |只看该作者
printf("%d",strlen(a));
where is a ?

论坛徽章:
0
3 [报告]
发表于 2006-09-17 16:39 |只看该作者
不好意思 ..
第2个笔误
现在改正过来了
谢谢楼上的提醒

楼上的能解释下为什么会出现这种差异么

论坛徽章:
0
4 [报告]
发表于 2006-09-17 19:07 |只看该作者
怎么高手都只看不帮帮忙啊....

实在是不能理解...
跪求答案....拜谢各位了

论坛徽章:
0
5 [报告]
发表于 2006-09-17 19:47 |只看该作者
楼上的不用这么讽刺吧.

讽刺就讽刺吧,不管了.能给我解释下么,谢谢了.

论坛徽章:
0
6 [报告]
发表于 2006-09-17 19:48 |只看该作者
tt? why?

论坛徽章:
0
7 [报告]
发表于 2006-09-17 19:50 |只看该作者
呵呵 热心的flw2来了
谢谢了

只是不明白 所以随便定义了一个结构体名tt

为什么单纯的字符数组和在结构体里的字符数组在相同的操作之后
返回的长度相差那么大呢?
能解释下么 flw2 谢谢了

论坛徽章:
0
8 [报告]
发表于 2006-09-17 20:18 |只看该作者
还说改正了,哪来的 a ?

论坛徽章:
0
9 [报告]
发表于 2006-09-17 20:26 |只看该作者
哎,心急了,对不起 (哎,老犯这种马虎的错误.)

接受mik的批评.
mik大哥,可以不可以给个解释或者点破下我呢.我实在是不明白啊.

论坛徽章:
0
10 [报告]
发表于 2006-09-17 20:49 |只看该作者
原帖由 iamfog 于 2006-9-17 20:26 发表
哎,心急了,对不起 (哎,老犯这种马虎的错误.)

接受mik的批评.
mik大哥,可以不可以给个解释或者点破下我呢.我实在是不明白啊.


man strlen

[ 本帖最后由 mik 于 2006-9-17 20:57 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP