总览 (SYNOPSIS)

#include <libgen.h>

char *dirname(char *path);
char *basename(char *path);

描述 (DESCRIPTION)

dirnamebasename 把 以 null 结尾 的 路径名 分解为 目录 和 文件名. 一般情况下, dirname 返回 路径名 的 前面部分, 直到 (但不包括) 最后一个 '/', 而 basename 则 返回 最后一个 '/' 后面 的 内容. 如果 路径名 以 '/' 结尾, 该 '/' 被认为 不是 路径名 的 一部分.

如果 路径名 path 不包含 斜杠 '/', dirname 返回 字符串 ".", 而 basename 返回 path 的 副本. 如果 路径名 path 是 "/", 则 dirnamebasename 均 返回 "/". 如果 路径名 path 是 NULL 指针 或 指向 空串, 则 dirnamebasename 均 返回 ".".

dirname 返回的 字符串, "/", 和 basename 返回的 字符串 连接 起来, 能够 产生 一个 完整 的 路径名.

无论 dirname 还是 basename 都 有可能 更改 path 的 内容, 因此 如果 需要 保护 原有 路径名, 应该 传送 副本 作为 参数. 此外, dirnamebasename 返回的 指针 可能 指向 一块 静态分配 的 内存, 会被 下次 调用 覆盖.

下面 的 例子 (摘自 SUSv2) 展示了 对于 不同的 路径名, dirnamebasename 返回 的 字符串:

path            dirname         basename
"/usr/lib" "/usr" "lib"
"/usr/" "/" "usr"
"usr" "." "usr"
"/" "/" "/"
"." "." "."
".." "." ".."

示例 (EXAMPLE)

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 VALUE)

dirnamebasename 均 返回 以 null 结尾的 字符串 的 指针.

dirname, basename - 分析路径成员的更多相关文章

  1. dirname basename 截取路径中的目录以及文件名

    dirname basename    截取路径中的目录以及文件名 windows 下面: #include "shlwapi.h"#pragma comment(lib, &qu ...

  2. 总结:man, info, hwclock, cal, type, which, dirname, basename, who, which, whatis, makewhatis, hash, tty

    man, info, help, date, hwclock, cal, shutdown, reboot, halt, poweroff, type, cd, which, dirname, bas ...

  3. linux 系统函数之 (dirname, basename)【转】

    转自:http://blog.csdn.net/peter_cloud/article/details/9308333 版权声明:本文为博主原创文章,未经博主允许不得转载. 除非你的原件考虑跨平台. ...

  4. php路径目录解析函数dirname basename pathinfo区别及实例

    php获取路径.目录或文件名称,我们经常会使用到dirname().basename().pathinfo()这三个函数,本文章向大家详细介绍这三个函数的区别以及使用实例,需要的朋友可以参考一下. d ...

  5. 【php】php路径目录解析函数dirname basename pathinfo区别及实例

    php获取路径.目录或文件名称,我们经常会使用到dirname().basename().pathinfo()这三个函数,本文章向大家详细介绍这三个函数的区别以及使用实例,需要的朋友可以参考一下. d ...

  6. dirname,basename的用法与用途

    #dirname介绍 当对文件使用dirname时,返回文件的上级目录,输出是否是绝对路径取决于输入的文件名是绝对路径 如果对目录使用,则返回上级目录 basename命令与dirname相反,读取文 ...

  7. c++ dirname() basename()

    http://linux.about.com/library/cmd/blcmdl3_dirname.htm #include <iostream> #include <libgen ...

  8. Python3基础 os.path.basename 处理路径字符串,返回文件的名字

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  9. linux 常用命令: basename 去掉路径和扩展名

      basename: 去掉路径和扩展名 /bin/basename coreutils-8.4-9.el6.x86_64 basename命令用于去掉路径信息,返回纯粹的文件名,如果指定的文件的扩展 ...

随机推荐

  1. 怎么解决Failed to load the JNI shared library

    怎么解决Failed to load the JNIshared library   解决Failed to load the JNIshared library唯一的方法就是重新安装eclipse, ...

  2. 多线程-threading模块3

    超级播放器 #coding:utf-8 import threading from time import sleep,ctime #超级播放器 def super_player(file,time) ...

  3. 关于cout输出精度问题

    #include <iostream.h> #include <iomanip.h> void main(void) { cout.setf(ios::fixed); cout ...

  4. 关于 GraPhlAn 的孤独自学

    最近需要用 GraPhlan 来绘制 taxo分类图,稍微研究了一下 一.简介 官网: http://huttenhower.sph.harvard.edu/GraPhlAn 主要有两个脚本: gra ...

  5. 利用thrift在c++、java和python之间相互调用

    转自:http://blog.csdn.net/andy_yf/article/details/7487384 thrift做为跨语言调用的方案有高效,支持语言较多,成熟等优点:代码侵入较强是其弱点. ...

  6. 51nod1432【贪心】

    对于每个数我找一个和他相加最接近独木舟,然后ans+=1; 想复杂了,直接两端来就好了. 然后两个相加如果<=m那么就让它们在一起,不是的话就让大的一艘船,然后继续搞(贪心) #include ...

  7. (5)Javascript的表达式

    Javascript的表达式 表达式是一个语句的集合,计算结果是个单一值,然后该结果被javascript归入下列数据类型之一:布尔.数字.字符串.对象等.表达式是具有一定的值,用操作符把常量和变量连 ...

  8. 怎么让普通用户达到root用户也可以拥有权限修改文件(CentOS系统)

    为什么会提出这个问题呢? 答:因为啊,比如我们在大数据集群搭建的时候,经常会需要配置环境变量,如/etc/profile.那么,问题来了,每次必须得都切换到root用户才能,但是呢,如何可以在普通用户 ...

  9. hdu 3461 Code Lock 并查集(有点难想到)★★

    #include<stdio.h> #include<math.h> ]; int count; #define mod 1000000007 int find(int x) ...

  10. 模拟赛01 T3 盖房子

    题面 http://zhengruioi.com/problem/248 题解 三重容斥(说是两重也行吧) 我们来看题目的约束 ①有k个位置不能放(k≤8) ②每行每列至少一个 ③正负对角线至少一个 ...