0

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

4

1 回答 1

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具有没有路径信息的文件名——这正是您想要的。

于 2013-07-13T17:02:09.090 回答