linux c文件位置,Linux C 从路径中分别获取目录和文件名的函数

1. 有两个SHELL命令有此功能:

dirname和basename

2. 同名的两个C函数:  (man 文档)

#include char *dirname(char *path);

char *basename(char *path);

DESCRIPTION

Warning: there are two different functions basename() - see below.

The functions dirname() and basename() break a null-terminated pathname

string into directory and filename  components.   In  the  usual  case,

dirname()  returns  the string up to, but not including, the final ’/’,

and basename() returns the component following the final ’/’.  Trailing

’/’ characters are not counted as part of the pathname.

If  path  does  not  contain  a slash, dirname() returns the string "."

while basename() returns a copy of path.  If path is  the  string  "/",

then both dirname() and basename() return the string "/".  If path is a

NULL pointer or points to an empty  string,  then  both  dirname()  and

basename() return the string ".".

Concatenating  the  string returned by dirname(), a "/", and the string

returned by basename() yields a complete pathname.

Both dirname() and basename() may  modify  the  contents  of  path,  so

copies should be passed to these functions.  Furthermore, dirname() and

basename() may return pointers to statically allocated memory which may

be overwritten by subsequent calls.

The  following  list  of  examples (taken from SUSv2) shows the strings

returned by dirname() and basename() for different paths:

path           dirname        basename

"/usr/lib"     "/usr"         "lib"

"/usr/"        "/"            "usr"

"usr"          "."            "usr"

"/"            "/"            "/"

"."            "."            "."

".."           "."            ".."

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值