簡體   English   中英

如何在windows中使用c中的GetFullPathName打印文件路徑

[英]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擴展為printfwprintf具體取決於您是否在啟用UNICODE編譯。 對於printf%s指定 ansi 字符串,對於wprintf%s指定寬字符串。

GetFullPathName擴展為GetFullPathNameAGetFullPathNameW ,同樣取決於您是否在啟用 UNICODE 的情況下編譯。 前者期望(並返回)ansi 字符串,后者是寬字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM