_splitpath函数得到文件的目录名和路径

在WINDOW程序中,可以直接调用MFC封装好的函数来得到文件的路径。
       void _splitpath( const char *path, char *drive, char *dir, char *fname, char *ext );
       通过调用这个函数,可以将driver指向文件所在的盘符(如C:),dir指向文件的目录( /sample/crt/ ,这里没有盘符),fname指向文件的文件名(makepath,没有前面的路径),ext指向文件的扩展名(如.c,有带小数点)。
       这样我们就可以得到这个文件的基本信息了。当然通过这些组合就可以得到相关文件的文件名的信息。例如得到文件的全名就可以用strcpy(.....)将*fname和*ext组合起来。


void CDlgDecNormal::OnDecryptTo()
{
    char szDrv[_MAX_DRIVE], szDir[_MAX_DIR], szFile[_MAX_FNAME];
    _splitpath(m_strSource,szDrv,szDir,szFile,NULL);
   
    CString strTargetPath;
    strTargetPath.Format("%s%s%s",szDrv,szDir,szFile);
   
    strTargetPath+="//";

    CString strFiles;

    if (m_lcFiles.GetSelectedCount() <= 0)
    {
        CString str;
        str = GetFileFullName( m_strSource );
        if( m_strAddr.Find("//")!=-1)
        {
            m_strAddr.Replace(str+"//","");
            m_strAddr+="//";
        }
        else
   
            m_strAddr.Replace(str,"");
           
        CString str1;
        str1 =m_strTargetFolder+ m_strAddr;
        strFiles = m_strTargetFolder;

        CString strAdd;
       
        CString strAll = str1 + "*.*";
        _finddata_t fd = { 0 };
        long hFile = _findfirst( strAll, &fd );
        if( hFile != -1 )
        {
            do
            {
                if( strcmp( fd.name, "." ) == 0 || strcmp( fd.name, ".." ) == 0 )
                    continue;
                strAdd.Format( "|%s%s", str1, fd.name );
                strFiles += strAdd;
            } while( _findnext( hFile, &fd ) == 0 );
            _findclose( hFile );
        }
 
    }
    else
    {
        CString strAdd;
        strFiles = m_strTargetFolder;
        POSITION pos = m_lcFiles.GetFirstSelectedItemPosition();
        int nIndex;

        UpdateData();
        CString strTemp;
        int iIndex = m_strAddr.Find( "//", 0 );
        if ( iIndex >= 0 )
        {
            strTemp = m_strAddr.Mid( iIndex + 1 );
        }
        while (pos != NULL)
        {
            nIndex = m_lcFiles.GetNextSelectedItem(pos);
            strAdd.Format("|%s%s//%s",m_strTargetFolder, strTemp, m_lcFiles.GetItemText(nIndex,0));
            strFiles += strAdd;
        }
    }


    CDlgDecPath dlg(strFiles,FALSE,strTargetPath);
    dlg.DoModal();
}

转自 守望天使飞过的博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值