总览
#include <libgen.h>
char *dirname(char *path);
char *basename(char *path);

说明
函数以 '/' 为分隔符
dirname
获取文件的路径
没有 '/' 的时候返回的是 "."
注意: dirname 会修改 path中的数据
basename
获取文件的名称
示例:
path        dirname    basename
"/usr/lib"  "/usr"     "lib"
"/usr/"     "/"        "usr"
"usr"       "."        "usr"
"/"         "/"        "/"
"."         "."        "."
".."        "."        ".."

代码:
#include <stdio.h>
#include <stdlib.h>
#include <libgen.h>
#include <string.h>int main ( int argc, char *argv[] )
{
char *str = "/root/workdir/haha.txt";
char buf[1024] = {0};strncpy (buf, str, strlen(str));//dirname 会修改buf中的值,所以需要一个缓冲区
//直接调用dirname(str), 会使程序崩溃
printf ("dirstr is:%s\n", dirname(buf));
printf ("dir buf is:%s\n", buf);//basename 不会修改buf中的值,以下两次调用都是可以的
strncpy (buf, str, strlen(str));
//1次
printf ("test1 basename is:%s\n", basename(buf));
printf ("name buf is:%s\n", buf);//2次
printf ("test2 basename is:%s\n", basename(str));return 0;
}

补充:

利用 strrchr 获取文件扩展名称(后缀)
#include <stdio.h>
#include <string.h>int main ( int argc, char *argv[] )
{char *str = "/hah/test/test.hah.dd.json";char *suffix = strrchr (str, '.');printf ("suffix is:%s\n", suffix);return 0;
}   

转载于:https://www.cnblogs.com/etangyushan/p/6560252.html

linux下的函数dirname()和basename()使用相关推荐

  1. linux下syscall函数,SYS_gettid,SYS_tgkill

    出处:http://blog.chinaunix.net/uid-28458801-id-4630215.html linux下syscall函数,SYS_gettid,SYS_tgkill 2014 ...

  2. linux下system函数的深入理解

    这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同的system()函数,直接在shell下输入system()函数中调用的命令也都一切正常.就没理这个bug,以为 ...

  3. Linux下curses函数库的详细介绍

    Linux下curses函数库的详细介绍 curses库介绍 安装 curses库函数介绍 初始化和重置函数 管理屏幕的函数 输出到屏幕 从屏幕读取 清除屏幕 移动光标 字符属性 管理键盘的函数 键盘 ...

  4. linux下readlink函数详解

    linux下readlink函数详解 相关函数: stat, lstat, symlink 表头文件: #include <unistd.h> 定义函数:int  readlink(con ...

  5. linux 纪元时间转换,[转]Linux下时间函数time gettimeofday

    Linux下时间函数time & gettimeofday UNIX及Linux的时间系统是由「新纪元时间」Epoch开始计算起,单位为秒.Epoch是指定为1970年1月1日凌晨零点零分零秒 ...

  6. Linux下connect函数 阻塞 与 非阻塞 问题

    一.概述 linux系统下,connect函数是阻塞的,阻塞时间的长度与系统相关.而如果把套接字设置成非阻塞,调用connect函数时会报错Operation now in progress,且err ...

  7. Linux下select函数实现的聊天服务器

    转载: http://blog.csdn.net/microtong/article/details/4989902 Linux下select函数实现的聊天服务器  佟强 http://blog.cs ...

  8. LINUX下poll函数用法

    LINUX下poll函数用法 文章目录 LINUX下poll函数用法 一.函数介绍 二.使用 1. 一.函数介绍 int poll(struct pollfd *fds, nfds_t nfds, i ...

  9. linux 函数返回string,linux 下c函数strcmp的返回值疑问?

    linux 下c函数strcmp的返回值疑问? strcmp函数解释: NAME strcmp, strncmp - compare two strings SYNOPSIS #include int ...

  10. Linux下time函数

    Linux下time函数都在time.h头文件中. 1.头文件 和时间有关的头文件有以下几个: time.h sys/time.h sys/times.h sys/timeb.h sys/timex. ...

最新文章

  1. 刚弄好的中台!又要开始拆了?难道是为了凑工作量?
  2. 数据中心告别柴发还需要多久?
  3. 在java中构建高效的结果缓存
  4. 大爷去取钱,银行把取款办成存款,大爷拒绝还钱,大家怎么看?
  5. t分布f分布与样本均值抽样分布_分布模拟1——MCMC抽样方法
  6. mysql 优化命令_MySQL优化Explain命令简介(一)
  7. NGINX 502 Bad Gateway 用upstream解决方法
  8. python---(10) python模块的使用
  9. 在vue项目中导入element-ui
  10. 开机LOGO与动画修改
  11. 网易云会员歌曲下载记录(.ncm-.mp3)
  12. winserve2016 万能驱动网卡_windows server 2016 安装有线网卡驱动
  13. 25匹马,5个跑道,不用外界工具怎样选出最快的5匹,要次数最短
  14. flv转mp4(ffmpeg)
  15. 【深度学习-吴恩达】L1-3 浅层神经网络 作业
  16. 由Tomcat 8005端口想到的...
  17. 苹果MACOS电脑MAC地址修改的方法
  18. 〖Python零基础入门篇㉟〗- 私有函数、私有变量及封装
  19. CVPR2017 | G-RMI_Google大佬构建的姿态估计baseline
  20. (转载)毕博管理咨询公司全球高级副总裁黄辉演讲实录

热门文章

  1. 使用Ubuntu的Crontab定时任务需要注意的地方
  2. 本地开发phpmyadmin去登陆验证
  3. c traps and pitfalls reading notes(2)
  4. Java类加载信息的顺序:包括静态代码快、静态类变量、非静态代码快、构造方法、普通方法...
  5. 面试官:@Transactional 注解是如何实现的?面试必问!
  6. Linus 怒批 GitHub:制造了毫无用处的垃圾合并信息!
  7. 千万级用户-亿级请求的平台架构演变
  8. 这20个常规Python语法你都搞明白了吗?
  9. 宣布下,一个小的里程碑!
  10. c语言检测数独是否正确,会数独的大佬请进。这是个判断九宫格数独是否正确的程序。...