首頁  >  文章  >  後端開發  >  C語言取得目前目錄時如何避免異常?

C語言取得目前目錄時如何避免異常?

Barbara Streisand
Barbara Streisand原創
2024-11-10 21:55:02761瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn