这也行??那个'\0'放哪里了?换成a[4],b[5],c[4]试试

解决方案 »

  1.   

    给你分析一下问题吧:a[3],b[4],c[3],内存如下分配(内存由底到高):c[0],c[1],c[2],0, //加0是因为4bytes boundary
    b[0],b[1],b[2],b[3],
    a[0],a[1],a[2],0,先cin>>a
    c[0],c[1],c[2],0, 
    b[0],b[1],b[2],b[3],
    '1','2','3',0,再cin>>b
    c[0],c[1],c[2],0, 
    '4','5','6','7',
    0,'2','3',0, //注意第一个被换成了'\0',因为它不会检查你是否溢出,都会在字串后面加'\0'表示结束。cin>>c
    '8','9','0',0, 
    '4','5','6','7',
    0,'2','3',0, 很明显看出来,b[4],c[3]都很正确,但c[3]第一个字节成了'\0',刚好就是结束符,输出就不难理解了,记住字串字后要有'\0'做结束符,所以要多用一个字节。
      

  2.   

    !!!!……………………!!!!!!!!!!!!…………(趋于+∞)
    Searph大哥!以后小弟跟着您老人家混了,小弟与大哥比,犹如什么萤火虫什么浩月之类(忘了,反正就是徐庶把卧龙的消息出卖给老刘的那一段),对大哥的敬仰之情,又有如那滔滔江水,连不绝。刚才小弟只知道肯定是那个\0的错,具体原因没大想明白,现在一看,恍然大悟—我这个蠢才居然把分配顺序搞忘了,而且又没注意那个该死的4bytes boundary,真是……
    天外有天,人外有人,山外又山,海外有海……………………
      

  3.   

    MMD~~不就给你买本书么,拍得这么肉麻的~~
      

  4.   

    各位大哥,4bytes boundary是什么??在CSDN上有介绍吗???应该怎么查????