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

时间:2013-07-13 16:36:57

标签: c winapi filenames

我想从路径字符串中提取文件名,但我对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"。

1 个答案:

答案 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结构获取文件信息。这包括lpstrFilelpstrFileTitle,其中{{1}}具有文件的完整路径,{{1}}具有没有路径信息的文件名 - 正是您想要的。