读书人

请大家帮帮忙!解决方法

发布时间: 2012-02-23 22:01:34 作者: rapoo

请大家帮帮忙!~~
main( )

{

char ch1[ ]= "ABCD ",ch2[ ]= "ABCD "; 

if ( strlen(ch1)> strlen(ch2)) puts(ch1) ;

else puts(ch2) ;

if (strcmp(ch1,ch2)> 0)

{

strcat(ch1,ch2) ;

puts(ch1);

}

else

{

strcat(ch1,ch2);

puts(ch2);

}

strcpy(ch1,ch2);

puts(ch1);

}

结果是ABCD    AbcdABCD   CD 我想知道结果中出现的CD是怎么得出来的?请帮帮一个爱学习的人吧!~~


[解决办法]
comman_ndsc,原因很简单,还是溢出. "ABCD "+ '0 '总共五字符号,tc可能对齐到了6个字符,也就是ch1占了0-5,接着ch2,strcat溢出,于是,0-5变成ABCDAB,6-9是CD\0D\0,6是ch2的地址,puts(ch2)
输出的自然就是CD了

读书人网 >C语言

热点推荐