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

标签 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”。

最佳答案

为了简单起见,我稍微修改了您的代码:

#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/

相关文章:

c++ - 以编程方式在 .doc 中搜索 + 替换

bash - 如何遍历目录中的文件并更改路径并为文件名添加后缀

FFmpeg:如何打开名称中带有撇号的文件?

c++ - 使用使用 C 样式字符串作为 OUT 参数的 WinAPI 函数

windows - Win10深色主题-如何在WINAPI中使用?

python - 从任何(不安全)字符串创建(理智/安全)文件名

c、创建 child 和wait()

c - "Already defined in object file"和 "one or more multiply defined symbols found"

c - C 中查找文件的简单问题

windows - 如何判断 Windows 内核事件对象是自动重置还是手动重置?