如何使用GetFullPathName提取没有文件夹路径的文件名

我想从路径字符串中提取文件名,但我对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  #include  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结构中获取文件信息。 这包括lpstrFilelpstrFileTitlelpstrFileTitle具有文件的完整路径, lpstrFileTitle具有没有路径信息的文件名 – 正是你想要的。