函数原型使用man 3 basename可以查看到. 从中可以看出,这个函数和dirname函数联系非常紧密.
下面是相关的源码示例
//gcc -g basename_demo.c -o basename_demo
//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <libgen.h>
int main(int argc, char* argv[]){
char* p;
//p = basename("htttp://www.youku.com/1.mp4/");
//p = basename("htttp://www.youku.com/1.mp4/"); //会有段错误
p = basename("htttp://www.youku.com/1.mp4?start=0&end=90");
printf("%s\n", p);
//这是官网的例子
char *dirc, *basec, *bname, *dname;
char *path = "/etc/passwd";
dirc = strdup(path);
basec = strdup(path);
dname = dirname(dirc);
bname = basename(basec);
printf("dirname=%s, basename=%s\n", dname, bname);
free(dirc);
free(basec);
return 0;
}
测试中发现,如果路径不加上文件名, 就会报段错误; 如果文件名后面有参数之类的,还是会照常解析出来.参看下面的截图.
源码中给出的man中的例子的效果如图:
参考文献
[1].http://os.51cto.com/art/201108/286576.htm
[2].http://blog.youkuaiyun.com/Draven_Liu/article/details/38235585