我正在尝试编写一个程序来获取其正在运行的文件夹的路径(在Windows上)。
这是到目前为止我得到的:
char path[MAX_PATH];
GetModuleFileName(NULL, path, MAX_PATH);
这可以正常工作,但是可以提供完整路径,包括exe名称。我只想要exe所在文件夹的路径,不包括exe名称。 我试图获取argv [0]的长度,并从路径的末尾删除它,但是我还不太清楚如何使它工作。
任何帮助将不胜感激!
答案 0 :(得分:0)
我正在尝试编写一个程序来获取其正在运行的文件夹的路径(在Windows上)。
可能有两种解释:可执行文件存储在文件夹中(这是您的代码所反映的)或当前工作目录(不一定是相同的,但我理解的是...) ,还有另一个Windows API函数。
char path[MAX_PATH];
GetModuleFileName(NULL, path, MAX_PATH);
编辑:如他评论中的PaulMcKenzie所示:已经不推荐使用PathRemoveFileSpec函数,尽管–应该使用PathCchRemoveFileSpec:
PathCchRemoveFileSpec(path, sizeof(path));
保留先前的答案(仅供更好地理解):
好的,当GetModuleFileName
检索完全限定的路径时,您将得到类似的内容:
c:\some\path\to\your\file.exe
您现在要做的就是找到最后一个反斜杠的位置:
char* end = strrchr(path, '\\');
// actually cannot be nullptr, as path is fully qualified, but still for security:
if(end)
{
// cut off the rest...
*end = 0; // new end, null character denotes it...
}
else
{
// something has badly gone wrong...
}