2

我是 C 新手,但精通 python。我正在寻找 C 中 string.split("/")[-1] 函数的功能等效项。到目前为止,我已经能够制作一个包含我的整个路径的字符数组。我想拆分那个字符串,所以我只有文件名。下面我包含了一个示例

char input_file_path [1024]
strcpy(input_file_path, "/this/is/my/file/path.txt")

我想要一些函数,它将采用 input_file_path 并从中拆分出 path.txt 。谢谢!

4

4 回答 4

6

您正在寻找basename(3)

basename()函数返回 path 指向的路径名中的最后一个组件删除任何尾随的 ' /' 字符。

例子:

#include <libgen.h>
#include <stdio.h>

int main(void)
{
    char path[] = "/this/is/my/file/path.txt";
    char *file = basename(path);
    printf("%s\n", file);
    return 0;
}

构建和运行:

$ make example && ./example
cc     example.c   -o example
path.txt
于 2013-09-23T22:43:45.663 回答
0

http://en.cppreference.com/w/c/string/byte/strtok

在这里检查。这也是 C 和 C++ 代码的一个很好的参考。

于 2013-09-23T22:44:18.640 回答
0

试试strtok()

用命令查一下man strtok。这些man页面是学习 C 的绝佳指南,无需退出安全的命令行。

于 2013-09-23T22:44:45.963 回答
0

除了basename在 Posix 上,您还可以在 Windows 上使用splitpath来有条件地支持多个平台。

于 2021-10-03T22:43:49.667 回答