我想从路径字符串中提取文件名,但我在使用 GetFullPathName 函数时遇到困难:
WCHAR *fileExt;
WCHAR szDir[256]; //dummy buffer
GetFullPathNameW(g_fileName,256, szDir,&fileExt); //g_filename is filename with path string
swprintf(szDestDir, L"C:\\Example\\%s", fileExt);
MessageBoxW(hwnd,szDestDir,L"Debug",MB_OK); //debug message
每次消息框显示“C:\Example\0”时,用 0 代替文件名,例如“text.txt”。
最佳答案
为了简单起见,我稍微修改了您的代码:
#include <Windows.h>
#include <stdio.h>
int main(int argc, char **argv) {
char *fileExt;
char szDir[256]; //dummy buffer
GetFullPathName(argv[0], 256, szDir, &fileExt);
printf("Full path: %s\nFilename: %s", szDir, fileExt);
return 0;
}
并在自己的源代码上运行它,得到以下结果:
C:\C\source>trash9 trash9.cpp
Full path: C:\C\source\trash9
Filename: trash9
也就是说,我想知道为什么你会搞乱 GetFullPathName
。在评论中,您说您正在获取文件名GetOpenFileName
。这意味着您正在 OPENFILENAME
结构中获取文件信息。这包括 lpstrFile
(它具有文件的完整路径)和 lpstrFileTitle
(它具有不带路径信息的文件名 - 正是您想要的内容)。
关于c - 如何使用 GetFullPathName 提取没有文件夹路径的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17632117/