确定当前目录
在 C 中,获取可执行文件运行的当前目录对于创建文件或管理资源等任务至关重要。但是,使用 GetCurrentDirectory() 可能会导致异常,如提供的示例所示。
解决异常
出现此问题是因为 GetCurrentDirectory() 需要一个有效的缓冲区存储当前目录路径。在提供的代码中,NPath 最初设置为 NULL。将 NULL 指针分配给 GetCurrentDirectory() 函数会导致异常。
替代方法
除了使用 GetCurrentDirectory() 之外,还可以使用其他几种方法来获取当前目录:
1. GetModuleFileName:
要检索包含目录和文件名的可执行路径,请使用 GetModuleFileName():
TCHAR buffer[MAX_PATH] = { 0 }; GetModuleFileName(NULL, buffer, MAX_PATH);
2。从可执行路径中提取目录路径:
获取可执行路径后,您可以通过查找路径中最后出现的“”或“/”来提取目录路径:
std::wstring::size_type pos = std::wstring(buffer).find_last_of(L"\/"); std::wstring directoryPath = std::wstring(buffer).substr(0, pos);
这提供了不带文件名的目录路径。
示例函数:
这是一个返回可执行文件的目录路径的示例函数:
#include <windows.h> #include <string> std::wstring ExePath() { TCHAR buffer[MAX_PATH] = { 0 }; GetModuleFileName(NULL, buffer, MAX_PATH); std::wstring::size_type pos = std::wstring(buffer).find_last_of(L"\/"); return std::wstring(buffer).substr(0, pos); }
用法:
std::cout << "Current directory: " << ExePath() << std::endl;
通过使用这些替代方法,您可以有效地获取当前目录并避免与 GetCurrentDirectory() 相关的异常。
以上是C语言获取当前目录时如何避免异常?的详细内容。更多信息请关注PHP中文网其他相关文章!