主要代码:
CFile file;
file.Open(TempName,CFile::modeWrite|CFile::typeBinary|CFile::modeCreate);
char *date=new char[msg.FileLong+1]; //分配和文件长度相同的缓冲区ewhile(nLeft>0)
{
   int ret=m_sock1->Receive(&date[idx],nLeft);//发送文件
    if(ret==0)return 0;
   nLeft-=ret;
   idx+=ret;
}        
date[msg.FileLong]=0;
file.Write(date,(int)msg.FileLong);
file.Close();
delete[] date;操作完后,会在文本前出现,如:H?之类的

解决方案 »

  1.   

    char *date=new char[msg.FileLong+1];
    memset(data,0,FileLong+1);
      

  2.   

    char *date=new char[msg.FileLong+1]; 
    memset(data,0,FileLong+1);
    这个我试过了,但是没有用
      

  3.   

    file.Write(date,(int)msg.FileLong); 在这家断电,看看写之前的数据对么,如果写之前的数据就不对,那就是你发送出问题了
      

  4.   

    进入循环前,idx = 0。