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

返回值 (RETURN VALUE)

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

原文地址:https://www.cnblogs.com/fanweisheng/p/11080798.html

时间: 2024-07-30 01:25:03

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

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

dirname basename    截取路径中的目录以及文件名 windows 下面: #include "shlwapi.h"#pragma comment(lib, "shlwapi.lib ") LPTSTR PathFindFileName(LPCTSTR pPath) 功能:获得路径中的文件名 例: PathFileFileName( “c://Program Files//File.txt” ) => "File.txt”.

总结: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, basename, who, which, whatis, makewhatis, echo, hash, tty tac:cat按行逆序显示 file FILE...: 查看文件内容的格式 # mkdir `date +%F-%H-%M-%S`创建以当前时间命令目录,例如2014-02-11-16-25

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

转自:http://blog.csdn.net/peter_cloud/article/details/9308333 版权声明:本文为博主原创文章,未经博主允许不得转载. 除非你的原件考虑跨平台. 在Linux编程多使用一些系统函数真的很方便,哎没办法越来越懒~~~~~~ 今天记录一下dirname 和basename这两个简单的处理文件路径的linux系统函数. 头文件: #include <libgen.h> 函数定义: char *dirname(char *path); char *

Linux Directory commands: mkdir, rmdir, tree dirname,basename

Linux命令之目录管理类命令:mkdir, rmdir, tree, dirname, basename mkdir命令:创建目录/新建目录 语法:mkdir [OPTION] /PATH/TO/SOMEWHERE 常见参数选项: -p:创建父目录//递归创建 -V:显示创建信息 示例: 如何/tmp/下创建目录:x_m, x_n, y_m, y_n # mkdir /tmp/{x_,y_}{m,n} rmdir命令:删除目录 语法:rmdir /PATH/TO/SOMEWHERE 常见的参数

basename/dirname 获取文件名/路径

http://ruby-doc.org/core-2.1.2/File.html#method-c-dirname (1)basename(file_name [, suffix] ) → base_name Returns the last component of the filename given in file_name, which can be formed using bothFile::SEPARATOR and File::ALT_SEPARATOR as the separ

Linux命令之目录管理类命令:mkdir, rmdir, tree, dirname, basename

mkdir命令:新建目录 语法:mkdir [OPTION] /PATH/TO/SOMEWHERE 常见参数选项: -p:创建父目录 -v: 显示创建过程 示例: 如何/tmp/下创建目录:x_m, x_n, y_m, y_n # mkdir /tmp/{x_,y_}{m,n} rmdir命令:删除目录 语法:rmdir /PATH/TO/SOMEWHERE 常见的参数选项: -p:连同上层的空目录一起删除(慎重使用) tree命令:以树状图列出目录的内容 语法:tree [OPTION]...

ucinet常用分析路径

1.将多值关系数据转换成二值关系数据,路径:变换→对分   2.密度分析,路径:网络→凝聚力→密度→密度   3.利用Net-Draw程序生成可视化结构图, 路径:可视化→Net-Draw→Open→Ucinet Dataset→Network   4.中心性的可视化分析,路径:Analysis→Centrality Measures   5.节点中心度分析,路径:网络→中心度→度   6.接近中心度分析,路径:网络→中心度→接近性   7.中间中心度分析,路径:网络→中心度→Freeman中间

php中 魔术常量__DIR__,__FILE__及函数dirname,basename

1 这几个常量和方法比较常用很多人容易混淆,这里详细介绍一下 2 3 __DIR__ :返回当前使用 '__DIR__'魔术常量的PHP文件所在目录 对于 /www/web/frontend/controllers/siteController.php 中 语句 echo __DIR__; 返回 '/www/web/frontend/controllers' 4 5 __FILE__:返回当前使用'__FILE__'魔术常量的PHP文件所在目录全路径(包含文件名及后缀) 对于 /www/web/

linux命令basename:去掉路径和扩展名,得到指定文件的文件名(去除文件扩展名.xxx)

1.basename的语法是: basename[选项][参数]其中: 选项:为有路径信息的文件名,如/home/test/test.txt 参数:指文件扩展名2如果在编程过程中,想取得纯粹的文件名,则该命令将非常有用.下面举两个例子: (1)需要把某个路径下的文件名赋值给变量file_name: 假设文件的路径是/home/test/test.txt,把test赋值给file_name: [c.plm@localhost ~]$ file_name=`basename /home/test/t