2个全局变量
char *mydatabuf=NULL;
char *destbuf=NULL;在程序里
mydatabuf=new char[19];
//这时候mydatabuf就是"屯屯屯屯屯....夸瓜夸瓜韩"
然后copymemory给mydatabuf负值
变成了"c:\windows\test.txt  ?夸瓜夸瓜?韩"
我要把这个夸瓜夸嘎去掉
就写了
strncpy(mtemp,DataBuf,19);
想要把mtemp 变成c:\windows\test.txt
可是怎么还是c:\windows\test.txt  ?夸瓜夸瓜?韩tnnd.我昨天是吃了不少西瓜。可是怎么这么多瓜?

解决方案 »

  1.   

    这个问题并不会影响函数对字符串的操作,字符串以'\0'结尾,它不会管你'\0'后面有什么东西。
    至其实只是你申请的空间没有初始化,如果你实在看不顺眼,可以申请空间以后先初始化。
    mydatabuf=new char[19];
    memset(mydatabuf,'\0',19);
    这样里面就没有西瓜了。
      

  2.   

    有字符串结束符才能算是个字符串。你的strncpy就拷贝19个字符,最后不一定补字符串结束符的,除非DataBuf的长度小于19。
    这样不就行了吗?
    mydatabuf = new char[20];//或者再大点儿,别那么吝啬。
    strcpy(mydatabuf , "c:\\windows\\test.txt")或者你自己加字符串结束符:
    mydatabuf = new char[20];
    strncpy(mydatabuf,DataBuf,19);
    mydatabuf[19] = '\0';
    但多麻烦呢。
      

  3.   

    char buf[128];
    ZeroMemory(buf, 128);
    strcpy(buf,"test");