如何删除文件路径的路径,只留下文件名?
我想从fts_path中仅提取文件名并将其存储在char * fileName中。
答案 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的评论。