TCHAR  szFilePath[MAX_PATH];   
GetModuleFileName(NULL,szFilePath,MAX_PATH);    //获取执行文件绝对路径
//LPTSTR szCmp = _T("\\");
for(int i = lstrlen(szFilePath); i >= 0; i--)
{
TCHAR temp = szFilePath[i];
int iCMPResult = lstrcmp(&temp,_T("\\"));
if( !iCMPResult)
{
szFilePath[i] = 0;
break;
}
}
以上的功能是从全路径名中删除最后的文件名,如:d:\pp\qq.exe,处理结果是d:\pp\,就是把后面的qq.exe去掉.不是MFC没有CString类,我跟踪了,不能比较啊

解决方案 »

  1.   


    TCHAR  szFilePath[MAX_PATH];  
    GetModuleFileName(NULL,szFilePath,MAX_PATH);    //获取执行文件绝对路径 
    //LPTSTR szCmp = _T("\\"); 
    for(int i = lstrlen(szFilePath); i >= 0; i--) 

    if(  szFilePath[i] == '\\' ) 

    szFilePath[i] = 0; 
    break; 


      

  2.   

    改成这样试试:    //.....
        TCHAR  szFilePath[MAX_PATH]; 
        GetModuleFileName(NULL, szFilePath, MAX_PATH);    //获取执行文件绝对路径
        for(int i=lstrlen(szFilePath)-1; i>=0; i--)       //是字符串长度-1
        {
            if(szFilepath[i] == '\\')
            {
                szFilePath[i] = '\0';                     //这个才是字符串结束标志
                break;
            }
        } 
      

  3.   

    以上基于MBCS没问题,是Unicode的话,lstrlen可能需要改成_wcslen,其他的地方可能需要略加改动