这段eVC程序哪里错了呢?怎么解决呢?

gujingyangguang   2010-3-4 12:38 楼主
下面的程序是为了创建一个.txt文件,但是运行后却显示内存溢出...
请各位高手看看那里错了吧。。。小弟感激不尽...

CFileDialog cFd(FALSE);
CFile file;

CString FileName;
if (IDOK==cFd.DoModal())
{
    FileName=cFd.GetFileName();
    UpdateData(FALSE);
}

OnInitialUpdate();

if(file.Open(FileName,CFile::modeCreate | CFile::modeReadWrite|CFile::modeNoTruncate))
{
        CString str,tempX,tempY,temp;
        for(int i=0;i         {
                tempX.Format(_T("%d"),points.x);
                tempY.Format(_T("%d"),points.y);
                temp=tempX+" "+tempY+"\n";
                str+=temp;
        }

        const   TCHAR*   sz   =   T2CW(str);   
        int   iLen   =   _tcslen(sz);   
        char *sz2=new char;
               
        WideCharToMultiByte(CP_ACP,   0,   sz,   -1,   sz2,   iLen,   NULL,   NULL);

        file.Seek(0,CFile::end);   
        file.Write(sz2,iLen);
        file.Close();
        delete sz2;
}

回复评论 (3)

代码不全,没法调试,建议把代码贴全…
下面的代码也可以创建TXT文件:
  1.         HANDLE hFile;
  2.         hFile=CreateFile(
  3.                                         _T("\\My Documents\\MyFile.TXT"),
  4.                                         GENERIC_WRITE|GENERIC_READ,
  5.                                         FILE_SHARE_READ|FILE_SHARE_WRITE,
  6.                                         NULL,
  7.                                         OPEN_ALWAYS,
  8.                                         FILE_ATTRIBUTE_NORMAL,
  9.                                         NULL
  10.                                         );
  11.         if (hFile==INVALID_HANDLE_VALUE)
  12.         {
  13.                 AfxMessageBox(_T("Create Succeed!"));
  14.                 return;
  15.         }
点赞  2010-3-4 13:17
问题应该是出在这个循环里
for(int i=0;i {
tempX.Format(_T("%d"),points.x);
tempY.Format(_T("%d"),points.y);
temp=tempX+" "+tempY+"\n";
str+=temp;
}

你的LineCount是怎么定义的?初值在哪里赋的值?
点赞  2010-3-4 13:32
引用: 引用 2 楼 yashi 的回复:
问题应该是出在这个循环里
for(int i=0;i   {
tempX.Format(_T("%d"),points.x);
tempY.Format(_T("%d"),points.y);
temp=tempX+" "+tempY+"\n";
str+=temp;
}

你的LineCount是怎么定义的?初值在哪里赋的值?


版主正解!顶一个!
点赞  2010-3-4 13:37
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复