#include "stdio.h"
main()
{
char str1[20]={"China GuangDong "};
char str2[10]={"ShenZhen"};
char str3[10];
str3[10]=strcat(str1,str2);
printf("%s",str3[10]);
}
按照老谭书中说的str3字符数组必须大于st1+str2的数组的长度.否则会出错. 但为什么str3[10]也完成正确呢?
另外
#include "stdio.h"
main()
{
char str1[]={"China GuangDong "};
char str2[]={"ShenZhen"};
printf("%s",strcat(str1,str2));
}
str1,str2不定义长度也会正确.老谭<C程序设计第二版>书上的P136.却说不对.
----------------解决方案--------------------------------------------------------
#include "stdio.h"
main()
{
char str1[20]={"China GuangDong "};
char str2[10]={"ShenZhen"};
char str3[10];
str3[10]=strcat(str1,str2); /*难道你没发现你这个str3[10]已经越界了吗,您此举相当于定义一个指针q=(&str3[9])+1,然后把*q=strcat(str1,str2); 当然是可以的了!*/
printf("%s",str3[10]);
}
按照老谭书中说的str3字符数组必须大于st1+str2的数组的长度.否则会出错. 但为什么str3[10]也完成正确呢?
另外
#include "stdio.h"
main()
{
char str1[]={"China GuangDong "}; /*一维允许这样*/
char str2[]={"ShenZhen"};
printf("%s",strcat(str1,str2));
}
str1,str2不定义长度也会正确.老谭<C程序设计第二版>书上的P136.却说不对. /*尽信书等于无书!*/
[此贴子已经被作者于2006-5-6 15:42:26编辑过]
----------------解决方案--------------------------------------------------------
第一个因为程序小所以没题!第二个是传递的受地址!所以没问题,但是第一个可能发现分配区域小而数据溢出而程序出现问题!
----------------解决方案--------------------------------------------------------
第一个程序这样做,很危险,因为指针q是未知的,
----------------解决方案--------------------------------------------------------
没事,用吧,野指针,没事,什么时候你系统报废了你就知道是怎么回事了
----------------解决方案--------------------------------------------------------
#include "stdio.h"
main()
{
char str1[20]={"China GuangDong "};
char str2[10]={"ShenZhen"};
char str3[10];
str3[10]=strcat(str1,str2);
printf("%s",str3[10]);
}
printf("%s",str3[10]);
这打印什么呢
----------------解决方案--------------------------------------------------------
第一个程序这样做,很危险,因为指针q是未知的,
#include "stdio.h"
main()
{
char str1[20]={"China GuangDong "};
char str2[10]={"ShenZhen"};
printf("%s",strcat(str1,str2));
}
可这样也行呀. str1的长度少于str1和str2之和,也没有出错...
[此贴子已经被作者于2006-5-6 15:54:40编辑过]
----------------解决方案--------------------------------------------------------
#include "stdio.h"
main()
{
char str1[20]={"China GuangDong "};
char str2[10]={"ShenZhen"};
printf("%s",strcpy(str1,str2,2));
}
运行的结果仍然是ShenZhen,而不是只复制str2中的前两个字符"Sh". 为什么?
----------------解决方案--------------------------------------------------------
printf("%s",strcpy(str1,str2,2));
我晕,把最后的2去掉
----------------解决方案--------------------------------------------------------
#include "stdio.h"
main()
{
char str1[20]={"China GuangDong "};
char str2[10]={"ShenZhen"};
char str3[10];
str3[10]=strcat(str1,str2);
printf("%s",str3[10]);
}
printf("%s",str3[10]);
这打印什么呢
China GuangDong ShenZhen
----------------解决方案--------------------------------------------------------