给定完整路径,API应该给我基本文件名.例如,"/ foo/bar.txt" - >"bar.txt".
Fed*_*oca 10
用路径(以a的形式char*
)提供它,它将以另一个的形式返回基本名称(即所需文件/目录的名称)char*
.
编辑:
我忘了告诉你POSIX版本basename()
修改了它的参数.如果你想避免这种情况,你可以basename()
在你的源代码中使用GNU版本:
#define _GNU_SOURCE
#include <string.h>
Run Code Online (Sandbox Code Playgroud)
作为交换,这个版本basename()
将返回一个空字符串,如果你用它来提供,例如/usr/bin/
由于斜杠.
#include <string.h>
char *basename(char const *path)
{
char *s = strrchr(path, '/');
if (!s)
return strdup(path);
else
return strdup(s + 1);
}
Run Code Online (Sandbox Code Playgroud)
你想要basename(),它应该存在于几乎任何POSIX-ish系统中:
http://www.opengroup.org/onlinepubs/000095399/functions/basename.html
#include <stdio.h>
#include <libgen.h>
int main() {
char name[] = "/foo/bar.txt";
printf("%s\n", basename(name));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
...
$ gcc test.c
$ ./a.out
bar.txt
$
Run Code Online (Sandbox Code Playgroud)