[英]how to print a file path using GetFullPathName in c in windows
希望你有美好的一天;
所以我使用 GetFullPathName 來獲取C programming language
中 powershell.exe 的路徑:
我在這里使用了這段代碼: 在 C 中使用名為 getfullpathname() 的函數解析路徑? 我也在這里使用了代碼: 我在使用 GetFullPathName 時出錯
無論我使用什么,我都會得到以下輸出:
Full path: C
如果我調試它但是我可以看到路徑的其余部分......
我試過的最后一個代碼是:
TCHAR* fileExt;
TCHAR szDir[256];
GetFullPathName("powershell.exe", 256, szDir, &fileExt);
printf("Full path: %s\n", szDir);
我試過這個結果是一樣的:
char filename[] = "powershell.exe";
char fullFilename[MAX_PATH];
GetFullPathName(filename, MAX_PATH, fullFilename, NULL);
printf("Full path: %s\n", fullFilename);
我也在這里和那里嘗試了多個代碼,我知道為什么但輸出總是相同的,正如我提到的,如果我調試它,我可以看到完整路徑,但我無法將它放入控制台,我使用的是 c 而不是 cpp文件,並使用 Visual Studio 2019。
您正在 ansi 和 unicode 之間進行混合和匹配。
相反,請執行以下操作:
TCHAR* fileExt;
TCHAR szDir[256];
GetFullPathName(TEXT("powershell.exe"), 256, szDir, &fileExt);
_tprintf(TEXT("Full path: %s\n"), szDir);
TEXT
宏擴展為 ansi 或寬字符串文字,具體取決於您是否在啟用UNICODE
編譯。
_tprintf
擴展為printf
或wprintf
具體取決於您是否在啟用UNICODE
編譯。 對於printf
, %s
指定 ansi 字符串,對於wprintf
, %s
指定寬字符串。
GetFullPathName
擴展為GetFullPathNameA
或GetFullPathNameW
,同樣取決於您是否在啟用 UNICODE 的情況下編譯。 前者期望(並返回)ansi 字符串,后者是寬字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.