我想从路径字符串中提取文件名,但我对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"。
答案 0 :(得分:3)
为简单起见,我修改了一些代码:
#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
,其中{{1}}具有文件的完整路径,{{1}}具有没有路径信息的文件名 - 正是您想要的。