以下代码那里有问题,为什么一运行立即报内存错误bool IsRoot(char *tempdir)
{
char szroot[4];
::wsprintf(szroot,"%c:\\\0",tempdir[0]);
return(::lstrcmp(szroot,tempdir)==0);
}
void seek(char *tempdir)
{
char dirpath[MAX_PATH];
::lstrcpy(dirpath,tempdir);
::lstrcat(dirpath,"\\");
::lstrcat(dirpath,"*.*");
HANDLE find;
WIN32_FIND_DATA findinfo;
find=::FindFirstFile(dirpath,&findinfo);
if(find==INVALID_HANDLE_VALUE)
return;
do
{
if(findinfo.cFileName=="."||findinfo.cFileName=="..")
continue;
char dirfile[MAX_PATH];
::lstrcpy(dirfile,tempdir);
if (!IsRoot(dirfile)) ::lstrcat(dirfile,"\\");
::lstrcat(dirfile,findinfo.cFileName);
if((GetFileAttributes(dirfile) & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY)
{
seek(dirfile);
}
else
if(findinfo.cFileName=="1.txt")
::AfxMessageBox(dirfile);
}while(::FindNextFile(find,&findinfo));
::CloseHandle(find);
}
void CSeek1Dlg::OnOK()
{
seek("D:");
//CDialog::OnOK();
}
{
char szroot[4];
::wsprintf(szroot,"%c:\\\0",tempdir[0]);
return(::lstrcmp(szroot,tempdir)==0);
}
void seek(char *tempdir)
{
char dirpath[MAX_PATH];
::lstrcpy(dirpath,tempdir);
::lstrcat(dirpath,"\\");
::lstrcat(dirpath,"*.*");
HANDLE find;
WIN32_FIND_DATA findinfo;
find=::FindFirstFile(dirpath,&findinfo);
if(find==INVALID_HANDLE_VALUE)
return;
do
{
if(findinfo.cFileName=="."||findinfo.cFileName=="..")
continue;
char dirfile[MAX_PATH];
::lstrcpy(dirfile,tempdir);
if (!IsRoot(dirfile)) ::lstrcat(dirfile,"\\");
::lstrcat(dirfile,findinfo.cFileName);
if((GetFileAttributes(dirfile) & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY)
{
seek(dirfile);
}
else
if(findinfo.cFileName=="1.txt")
::AfxMessageBox(dirfile);
}while(::FindNextFile(find,&findinfo));
::CloseHandle(find);
}
void CSeek1Dlg::OnOK()
{
seek("D:");
//CDialog::OnOK();
}
解决方案 »
- 一个数字高程求插点的问题
- 请问TextOut()输出字符串中怎样实现字符串回车?
- ADO连接数据库中出现的问题
- 请问有关用install shield 做安装文件的问题!
- 简单GDI问题:如何使绘制的圆形中间透明?
- 在VC中要在一个程序中提前结束整个程序应该怎么办
- 如何把对话框中的值传给非模态对话框,并在非模态对话框中显示出来。
- 用VC++如何实现将一CAD图形文件(.dwg)显示在一视图类窗口中?用容器类怎么实现?
- static加载在后,这种问题如何解决
- 函数accept()返回的socket和用于监听的socket使用同一个端口吗
- 这是什么错误如何解决?
- CListctrl控件中,怎样实现点击表头各列即可按所点击的列进行排序
::SetCurrentDirectory( dirfile );
seek( dirfile );
::SetCurrentDirectory( _T".." );
http://www.csdn.net/cnshare/soft/10/10117.shtm
if((strncmp(findinfo.cFileName,".",1)==0)||
(strncmp(findinfo.cFileName,"..",2)==0))
{
continue;
}
{
WIN32_FIND_DATA fd;
//::SetCurrentDirectory(strTemp); HANDLE hFind = ::FindFirstFile("*.*", &fd);
if(hFind != INVALID_HANDLE_VALUE)
{
do
{
if(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
CString name = fd.cFileName;
if(name != _T(".") && name != _T(".."))
{
strTemp += _T("\\") + name;
::SetCurrentDirectory(strTemp);
FindFile(strTemp);
::SetCurrentDirectory(_T(".."));
TCHAR szCurDir[MAX_PATH];
::GetCurrentDirectory(sizeof(szCurDir) / sizeof (TCHAR), szCurDir);
strTemp = szCurDir;
}
}
else
{
CString strExt = GetExt(fd.cFileName);
if(m_lExt.Find(strExt))
AddToListCtrl(strTemp + _T("\\") + fd.cFileName, strExt);
} }while(::FindNextFile(hFind, &fd)); ::FindClose(hFind);
}
}