如何删除获取文件名的路径

时间:2012-02-08 18:09:33

标签: c

如何删除文件路径的路径,只留下文件名?

我想从fts_path中仅提取文件名并将其存储在char * fileName中。

4 个答案:

答案 0 :(得分:6)

这是一个删除POSIX风格(/ - 分隔)路径名路径的函数:

char *base_name(const char *pathname)
{
    char *lastsep = strrchr(pathname, '/');
    return lastsep ? lastsep+1 : pathname;
}

如果您需要支持具有奇数路径分隔符(如MacOS 9或Windows)的旧系统,则可能需要调整上述内容以搜索多个可能的分隔符。例如,在Windows上,/\都是路径分隔符,可以使用它们的任何组合。

答案 1 :(得分:5)

你想要basename(3)

答案 2 :(得分:3)

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

int main(void)
{
    char * path = "/homes/mk08/Desktop/lala.c";
    char * tmp  = strdup(path);

    if(tmp) {
        printf("%s\n", basename(tmp));
        free(tmp);
    }

    return EXIT_SUCCESS;
}

这将输出:

lala.c

答案 3 :(得分:1)

我确信这样做的方法不那么迂回,但是你总是可以搜索文件路径(我假设它存储为char数组?),得到最终'\'的位置,然后在此之前删除所有内容。

编辑:见R的评论。