首页 > 后端开发 > C++ > C语言获取当前目录时如何避免异常?

C语言获取当前目录时如何避免异常?

Barbara Streisand
发布: 2024-11-10 21:55:02
原创
822 人浏览过

How to Avoid Exceptions When Getting the Current Directory in C  ?

确定当前目录

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板