大问题:如何才能从路径中取出全文件名(用_splitpath取不出全文件名)?
我用如下方法:
lpszPathName="c:\\dos\\work\\book_2005_05_18.out.name.std003.dat";
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];
_splitpath(lpszPathName, drive, dir, fname, ext );
CString a;
a.Format("%s",fname);这时a中是:book_2005_05_18.out啊!而不是全名:book_2005_05_18.out.name.std003.dat
如何才能从路径中取出文件全名呢?
多谢!

解决方案 »

  1.   

    char filename[MAX_PATH];
    GetModuleFileName(NULL,filename,256);
      

  2.   

    如果肯定最后'\'后是全文件名:const char* GetFileName2( LPCTSTR lpszFilePath )
    {
       char*  p = strrchr('\\');   if( p == 0 ) return NULL;//not found ,it's bad filepath name   return ++p; // Skip pointer '\\' to next char. 
    }
      

  3.   

    strrchr写错了
    应该是 strrchr( lpszFilePath, '\\')
      

  4.   

    const char* GetFileName( LPCTSTR lpszFilePath )
    {
       char*  p = strrchr(lpszFilePath, '\\');   if( p == 0 ) return NULL;//not found ,it's bad filepath name   return ++p; // Skip pointer '\\' to next char. 
    }
    返回的就是文件名啊
      

  5.   

    int nPos;
    GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
    sPath.ReleaseBuffer ();
    nPos = sPath.ReverseFind ('\\');
    sPath = sPath.Right(sPath.GetLength() - (nPos+1));
      

  6.   

    晕!
    你知道用_splitpath,不知道用_makepath啊。lpszPathName="c:\\dos\\work\\book_2005_05_18.out.name.std003.dat";
    char drive[_MAX_DRIVE];
    char dir[_MAX_DIR];
    char fname[_MAX_FNAME];
    char ext[_MAX_EXT];
    _splitpath(lpszPathName, drive, dir, fname, ext );
    _makepath(lpszPathName,NULL,NULL,fname,ext);
    CString a;
    a.Format("%s",lpszPathName);
      

  7.   

    补充一下,
    _makepath(lpszPathName,NULL,NULL,fname,ext);
    第一个参数换别的,这里不能用lpszPathName。用你需要保存的地方。
      

  8.   

    lpszPathName="c:\\dos\\work\\book_2005_05_18.out.name.std003.dat";
    char drive[_MAX_DRIVE];
    char dir[_MAX_DIR];
    char fname[_MAX_FNAME];
    char ext[_MAX_EXT];
    char filename[MAX_PATH];
    _splitpath(lpszPathName, drive, dir, fname, ext );
    _makepath(filename,NULL,NULL,fname,ext);
    CString a;
    a.Format("%s",filename);
    你试这个!我都试成功了!
      

  9.   

    fname不应该是book_2005_05_18.out,应该是book_2005_05_18.out.name.std003,
    我这正常,你的windows版本,如果要全名,将fname,ext和起来即可
    strcat(fname, ext )