我定义的三个数组 unsigned char  sn2[8],ye[9],th[2]memcpy(sn2,(char*)"88888888",8);//sn2 内容为 8888888
memcpy(ye,(char*)"123456.89",9);//ye 内容为 123456.89 烫88888888
memcpy(th,(char*)"01",2);//th 内容为 0 1烫 123456.89 烫88888888请各位大哥解释一下这是怎么回事

解决方案 »

  1.   

    unsigned char  sn2[9],ye[10],th[3]
    这样定义就没问题了!
    因为存放这符串的时候,要比它的长度多一个字节用于存放结束符'\0'
    最好不用memcpy
    如果坚持要用的话,先要对数组清0就ok了
    memset(sn2,0,9);
    memset(ye,0,10);
    memset(th,0,3);
      

  2.   

    缺少结束符'\0'
    unsigned char  sn2[9],ye[10],th[3]; memcpy(sn2,(char*)"88888888",8);//sn2 内容为 8888888
    sn2[8] = '\0';
    memcpy(ye,(char*)"123456.89",9);//ye 内容为 123456.89 烫88888888
    ye[9] = '\0';
    memcpy(th,(char*)"01",2);//th 内容为 0 1烫 123456.89 烫88888888
    th[2] = '\0';