char * list=new char[30];
memcpy(list,"0",30);
fseek(fp,0,SEEK_END);
int len=ftell(fp);
rewind(fp);
fread(list,1,len,fp);
AfxMessageBox(list,MB_OK);fp指向的文件里只有999三个数字,但list经常会显示999后面跟着一些乱码。
问题:如何将后面的乱码去掉

解决方案 »

  1.   

    char * list=new char[30]; 
    memcpy(list,"0",30 - 1); 
    list[ 30 - 1 ] = 0;..........
      

  2.   

    最好是
    char * list=new char[30]; 
    memset( list, 0, 30 );
    ........
      

  3.   

    回3楼,字符串最快的清零操作应该是list[0] = '\0';
    不知对不对?
      

  4.   

    你那只是把第一个元素置0
    memset(list, 0, length);
      

  5.   

    每次读取的字符长度不超过size- 1个
      

  6.   

    回楼上,我的意思是说字符串的清零,执行list[0] = '\0';后,list就是一个空串了
      

  7.   

    memcpy(list,"0",30);  这个只能把0 赋值给第一个 元素. 要想初始化 应该用memset()函数.
    写文件 还是要自己加结束符的..
      

  8.   

    The memcpy function copies count bytes of src to dest. 
    memcpy(list,"0",30); =====> memset( list, 0, 30 );
      

  9.   

    memcpy(list,"0",30); 
    这句有问题
    改成
    memset(list,0,30);