总览 (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 结尾的 字符串 的 指针.

最新文章

  1. 二次剩余、三次剩余、k次剩余
  2. Atiti 重定向标准输出到字符串转接口adapter stream流体系 以及 重定向到字符串
  3. WPF在DLL中读取Resource的方法
  4. 在MacOS和iOS系统中使用OpenCV
  5. debian系统root用户登录
  6. Resume简历中装B的词汇总结大全
  7. The first day of HTML
  8. vs2015Update2的一个坑
  9. 保护模式下GDTR,LDTR,全局描述符表,局部描述符表和选择器的关系
  10. Move Zeroes——Leetcode
  11. getchar()不停止原因
  12. input中v-model和value不能同时调用时解决方案
  13. 洛谷P2860 [USACO06JAN]冗余路径Redundant Paths(tarjan求边双联通分量)
  14. 20165237 学习基础和C语言基础调查
  15. 运营商挂时长神器,批量导入账号,导出账号状态,随机修改MAC地址
  16. anchor values list
  17. java只使用try和finally不使用catch的原因和场景
  18. MATLAB中常用的排列、组合、阶乘函数
  19. python中的BaseManager通信(一)文件三分
  20. 019sys模块

热门文章

  1. 单选框 复选框 隐藏之后,绑定的change事件在ie中失效的问题
  2. Redis高级
  3. E20180410-sl
  4. E20170415-ms
  5. hdoj5402 【模拟/构造】
  6. 2016 Multi-University Training Contest 3 1011【鸽巢原理】
  7. 【UVA - 10474 】Where is the Marble?(排序)
  8. expect实现配置机器信任关系
  9. (数位DP)51NOD 1042 数字0-9的数量
  10. python实现基数排序