请高手帮忙看看一个文件处理的程序
编译时出现如下错误提示:
error C2664: '_chdir ' : cannot convert parameter 1 from 'bool ' to 'const char * 'Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
错误指向代码行:if(_chdir((const char *)(FileName.Left(i))!=0))
程序的功能为成批处理文件。
程序代码如下:
int ProcessFiles(void (* ProcessAFile) (CString fileName))
{
CString FileName;
if (!GetData( "输入文件名(可含通配符): ",FileName)) return 0;
int i=FileName.ReverseFind( '\\ ');
if (i> 0)
{
if(_chdir((const char *)(FileName.Left(i))!=0))
{
AfxMessageBox( "路径名错误! ");
return 0;
}
FileName=FileName.Mid(i+1);
}
_finddata_t info;
long handle=_findfirst(FileName.GetBuffer(FileName.GetLength()),&info);
if (errno==ENOENT)
{
AfxMessageBox( "没有找到匹配文件! ");
return 0;
}
else if (errno==EINVAL)
{
AfxMessageBox( "非法文件名! ");
return 0;
}
int fileCount=0;
do {
ProcessAFile(info.name);
fileCount++;
} while (_findnext(handle, &info)==0);
errno=0;
AfxMessageBox( "全部文件处理完毕! ");
return fileCount;
}
BOOL GetData(const char* Prompt, CString& Data)
{
//输入一个字符串
CGetDataDlg dlg(Prompt);//调用对话框类的构造函数
if (dlg.DoModal()!=IDOK) return FALSE;//如果用户取消了对话框
Data=dlg.DataString;//给形参赋值
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CGetDataDlg2
BOOL GetData(const char* Prompt, int& Data)
{
//输入一个整数
CGetDataDlg dlg(Prompt);
if (dlg.DoModal()!=IDOK) return FALSE;
dlg.DataString.TrimLeft();//压缩左边空格
dlg.DataString.TrimRight();//压缩右边空格
Data=atoi((const char *)(dlg.DataString));//转换为整数
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CGetDataDlg3
BOOL GetData(const char *Prompt, double& Data)
{//输入一个实数
CGetDataDlg dlg(Prompt);
if (dlg.DoModal()!=IDOK) return FALSE;
dlg.DataString.TrimLeft();
dlg.DataString.TrimRight();
Data=atof((const char *)(dlg.DataString));
return TRUE;
}
请问:问题出在哪里?如何改正?万分感谢!
[解决办法]
( (const char *) (FileName.Left(i))!=0) )
你的括号离的太近了,拉远点就好了 : )