• dirname, basename


    总览 (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
    ", dname, bname);
    free(dirc);
    free(basec);
    

    返回值 (RETURN VALUE)

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

  • 相关阅读:
    shell学习小结
    数据结构基础
    IComparable接口实现自定义类型的排序
    RavenDb进行全文检索实现及数据统计
    移动开发经验总结(monotouch&monodroid)
    Maven pom.xml中的元素modules、parent、properties以及import
    StaticHtml1.0beta
    asp.net 页面静态化
    JQuery常用方法
    ASP.NET无刷新多文件文件上传系统(转载)
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11080798.html
Copyright © 2020-2023  润新知