今天写程序时遇到给定文件全路径求文件路径,即去掉后面的文件名称。
用MFC比较容易实现,可以用如下的示例得到
TCHAR szPath[MAX_PATH];
if( !GetModuleFileName(NULL, szPath, MAX_PATH ))
{
printf("GetModuleFileName failed (%d)/n", GetLastError());
return _T("");
}
CString strPath(szPath);
int nPos = strPath.ReverseFind('//');
strPath = strPath.Left(nPos + 1);
或者
TCHAR szPathName[MAX_PATH] = { 0 };
TCHAR szDrive[_MAX_DRIVE] = { 0 };
TCHAR szDir[_MAX_DIR] = { 0 };
TCHAR szFname[_MAX_FNAME] = { 0 };
TCHAR szExt[_MAX_EXT] = { 0 };
(void)::GetModuleFileName( NULL, szPathName, MAX_PATH );
_splitpath( szPathName, szDrive, szDir, szFname, szExt );
但用指针操作,更能锻练C++的功力,在网上搜索了一段代码,发觉下面的程序写的很精巧。摘录如下:
#include "stdio.h"
#include "conio.h"
void splitname(const char *szfullfilename, char *szpathname, cha