如何从路径中提取文件名

pic*_*c11 34 c

Linux API/POSIX中应该有一些优雅的东西可以从完整路径中提取基本文件名.谢谢.

mae*_*ics 45

char *basename(char *path).

或者man 3 basename在目标UNIX/POSIX系统上运行命令" ".


R..*_*R.. 15

使用basename(具有奇数角区语义)或者通过调用strrchr(pathname, '/')整个字符串作为基本名称来自行完成(如果它不包含'/'字符).


Ami*_*mir 5

strstr如果您也对目录名称感兴趣,您可以使用:

char *path ="ab/cde/fg.out";
char *ssc;
int l = 0;
ssc = strstr(path, "/");
do{
    l = strlen(ssc) + 1;
    path = &path[strlen(path)-l+2];
    ssc = strstr(path, "/");
}while(ssc);
printf("%s\n", path);
Run Code Online (Sandbox Code Playgroud)


Joh*_*all 5

这是一个单线示例(给定的char * whoami),它说明了基本算法:

(whoami = strrchr(argv[0], '/')) ? ++whoami : (whoami = argv[0]);
Run Code Online (Sandbox Code Playgroud)

如果可能为NULL,则需要进行额外的检查。另请注意,这只是指向原始字符串- strdup()可能合适。