- 论坛徽章:
- 0
|
有UNIX 我就是在AIX上测试的.
strlen计算它的参数所志向位置的前非'\0'字符的个数.这个我也清楚.
第一个程序.
我做如下改动,看对不.
加memset(ca,0,sizeof(ca));
然后在strcat后面加ca[101]='\0';
输出结果跟原来是一样的,0,102;
- #include<stdio.h>
- #include<stdlib.h>
- int main()
- {
- char ca[102]
- char cb[51]="aa";
- char cc[51]="a";
- memset(ca,0,sizeof(ca));
- printf("%d",strlen(a));
- strcpy(ca,cb);
- strcat(ca,cc);
- ca[101]='\0'
- printf("%d",strlen(a));
- return 0;
- }
复制代码
第二个程序我做如下改动:
- #include<stdio.h>
- #include<stdlib.h>
- int main()
- {
- struct tt{
- char ca[102]
- char cb[51];
- char cc[51];
- }tt_d;
- memset(&tt_d,0,sizeof(tt_d));
- strcpy(tt_d.cb,"aa");
- tt_d.cb[50]='\0';
- strcpy(tt_d.cc,"a");
- tt_d.cc[50]='\0';
- printf("%d",strlen(tt_d.ca));
- strcpy(tt_d.ca,tt_d.cb);
- strcat(tt_d.ca,tt_d.cc);
- tt_d.cb[101]='\0';
- printf("%d",strlen(tt_d.ca));
- return 0;
- }
复制代码
但是结果还是为0,3.ca的长度为cb和cc的和.而第一个程序却为整个数组的长度.
跟我前面的一样,为何?
mik大哥和flw2大哥,上面的程序有哪里有错误或者逻辑想法的错误导致了结果的不同吗?
现在还在公司,因为要赶公交车回去了,那里不能上网.
所以先走了,明天再来这里请教. |
|