先 *buffer = 0;试试。

解决方案 »

  1.   

    上面搞错了,我意思是可能buffer指向的内存可能有数据,
    比如:"h72o0"那么拷贝后就有可能是 "20030"先 *(buffer+4) = 0;
      

  2.   

    抱歉, c++里的string都以acs码的0结尾
      

  3.   

    注意strncpy的用法!strncpy(char* target,char* source,size_t count);
    如果你的count小于strlen(source),那么copy出来的字符串是没有'\0'这个asciiz符号的。所以你的代码中,会把buffer里面的乱字符都包含近来的。所以,你的代码应该加一句,类似于这样:    char destemp[100] = "20030101";
        char buffer[100];    memset(buffer,0,100);//如果不加这句,就会有你那个问题。
        strncpy(buffer,destemp,4);
      

  4.   

    又来了,改这样吧:int TranslateString(char* buffer)
    {
    ....//destemp = "20030101";*buffer = 0;
    strncat(buffer, destmp, 4);
    strcat(buffer, "/");
    strncat(buffer, destmp + 4, 2);
    strcat(buffer,"/");
    strncat(buffer, destmp + 6, 2);
    ......
    }