源碼與 txt 同目錄,相對路徑 fopen("data.txt", "r") 失敗,絕對路徑也失敗,曾經能打開現在不行。
$(ProjectDir) 或 $(OutDir)(如 Debug/),而非源碼目錄。printf("cwd: %s\n", getcwd(NULL, 0)); 打印當前工作目錄。data.txt.txt。Data.txt ≠ data.txt。"C:\\data\\file.txt" 或正斜杠 "C:/data/file.txt"。// 1. 打印工作目錄確認
char cwd[1024];
getcwd(cwd, sizeof(cwd));
printf("Working dir: %s\n", cwd);
// 2. 用相對可執行文件路徑定位資源
// 獲取模塊路徑 -> 目錄 -> 拼接文件名
char exePath[MAX_PATH];
GetModuleFileNameA(NULL, exePath, MAX_PATH);
PathRemoveFileSpecA(exePath);
strcat(exePath, "\\data.txt");
FILE* fp = fopen(exePath, "r");
$(ProjectDir) 或輸出目錄。"cwd": "${workspaceFolder}"。確認工作目錄與文件實際位置一致、注意大小寫與擴展名、正確轉義路徑,即可解決相對路徑打不開文件的問題。