首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言獲取檔案完整路徑的方法

     編輯:C 語言問答

從檔案名取得完整路徑的兩種策略

1. 相對路徑:配合工作目錄

若檔案與執行檔位於同一目錄,直接使用檔案名即可:

FILE *fp = fopen("data.txt", "r"); // 相對於當前工作目錄

可呼叫 getcwd() (POSIX) 或 _getcwd() (Windows) 取得當前工作目錄,再自行拼接。

2. 絕對路徑:系統 API 解析

Windows:使用 GetFullPathName 或 PathCanonicalize (Shlwapi.h)。

#include <windows.h>
#include <stdio.h>

void PrintFullPath(LPCSTR filename)
{
    char full[MAX_PATH];
    DWORD len = GetFullPathNameA(filename, MAX_PATH, full, NULL);
    if (len > 0 && len < MAX_PATH)
        printf("完整路徑: %s\n", full);
    else
        printf("路徑過長或檔案不存在\n");
}

Linux/Unix (POSIX):使用 realpath() 解析符號連結並轉為絕對路徑。

#include <stdlib.h>
#include <stdio.h>
#include <limits.h>

void PrintRealPath(const char *filename)
{
    char resolved[PATH_MAX];
    if (realpath(filename, resolved))
        printf("真實路徑: %s\n", resolved);
    else
        perror("realpath");
}

跨平台建議

若需跨平台,可封裝介面,編譯期以巨集切換實作;或使用 Boost.Filesystem / C++17 std::filesystem(C 語言專案可考慮引入輕量級封裝庫)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved