请教高手:我有如下的程序:处理一个目录下的所有文本文件,当目录下只有一个文件时就不会出错,但是,当出现多个文件时,程序处理玩所有的文本后,在跳出此过程时就出现某一段内存不能读的错误,请高手指教:
谢谢!
void CHzFrequencyDlg::FolderFileFreq(CString m_FolderPath)
{
CFileFind find;/*对目录的文件进行查找*/
BOOL isFind;
char *fName="";
/* 遍历m_Path目录下的文本文件 */
for ( int i=0;i<HZ_NUM;i++)
HZFreq[i]=0; if( m_FolderPath != "")
{
isFind = find.FindFile(m_FolderPath + "\\*.txt");
while(isFind)
{
isFind=find.FindNextFile();
fName=new char[strlen(find.GetFileName())+1+m_FolderPath.GetLength()];
strcpy(fName,m_FolderPath+"\\"+find.GetFileName());
HZFreqency(fName);
}
}
else
{
AfxMessageBox("输入的路径不能为空!!!");
m_Edit.SetFocus();
}
return;
}当成需要跳出时,就出现:xxxxx内存段 不可读的错误!
当把“HZFreqency(fName);”去掉就没有错误了。
void CHzFrequencyDlg::HZFreqency(CString Filename)
{//计算单个文件的汉字字频
FILE *inFile;
unsigned char c1,c2;
int ID;
if((inFile=fopen(Filename,"rb"))!=NULL)
{
while (!feof(inFile))
{
c1=(unsigned char)fgetc(inFile);
if(c1<128) continue;
if(c1<176)
{
c2=fgetc(inFile);
continue;
}
c2=(unsigned char)fgetc(inFile);
ID=HZ_ID(c1,c2);
HZFreq[ID]++;
}
fclose(inFile);
}
else
{
AfxMessageBox("打开文件时出错!!!");
}
//return;
}
请问是什么原因
谢谢!
void CHzFrequencyDlg::FolderFileFreq(CString m_FolderPath)
{
CFileFind find;/*对目录的文件进行查找*/
BOOL isFind;
char *fName="";
/* 遍历m_Path目录下的文本文件 */
for ( int i=0;i<HZ_NUM;i++)
HZFreq[i]=0; if( m_FolderPath != "")
{
isFind = find.FindFile(m_FolderPath + "\\*.txt");
while(isFind)
{
isFind=find.FindNextFile();
fName=new char[strlen(find.GetFileName())+1+m_FolderPath.GetLength()];
strcpy(fName,m_FolderPath+"\\"+find.GetFileName());
HZFreqency(fName);
}
}
else
{
AfxMessageBox("输入的路径不能为空!!!");
m_Edit.SetFocus();
}
return;
}当成需要跳出时,就出现:xxxxx内存段 不可读的错误!
当把“HZFreqency(fName);”去掉就没有错误了。
void CHzFrequencyDlg::HZFreqency(CString Filename)
{//计算单个文件的汉字字频
FILE *inFile;
unsigned char c1,c2;
int ID;
if((inFile=fopen(Filename,"rb"))!=NULL)
{
while (!feof(inFile))
{
c1=(unsigned char)fgetc(inFile);
if(c1<128) continue;
if(c1<176)
{
c2=fgetc(inFile);
continue;
}
c2=(unsigned char)fgetc(inFile);
ID=HZ_ID(c1,c2);
HZFreq[ID]++;
}
fclose(inFile);
}
else
{
AfxMessageBox("打开文件时出错!!!");
}
//return;
}
请问是什么原因
解决方案 »
- 这句话是在干嘛?
- 用spy++的查找功能可以捕捉到一般的控件的句柄,为什么不能捕捉到QQ2009类的控件?
- richedit 同步滚动的实现
- 帮忙看看这里的socket是用TCP/IP还是用UDP好?
- VS2005 一个简单的MDI程序,约七个窗口,资源文件(RC)居然有580M,正常吗??
- 请问为什么这样ResumeThread,线程不能恢复执行呢?
- 50分 怎么在RichEdit里面隔行或则隔列选中,
- 哪里有这样的论坛程序,
- 和大家讨论一个问题:一个面向对象的系统,能不能做到与具体业务无关?内有详细说明(46是我所能给的最高分了)
- 如何即时获得当前音频信息(大小、频率。。)?
- 如何得到程序自己所在的完整路徑?
- 为什么主线程收不到其他线程发送的自定义消息?
文提出在HZFreqency(fName);”但我不知道怎么改