linux下的函数dirname()和basename()使用
2024-08-30 01:34:05
总览
#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[] = {}; 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 ;
}
补充:
利用 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 ;
}
最新文章
- Mysql触发器
- 用int类型表示最大公倍数
- 20135223/20135234/20135229小组——亚博 Arduino智能小车实践报告
- Sql Server CONVERT获取当前日期及日期样式
- Regmon7.04绿色版(注册表变动实时监视工具)
- VueJs开发笔记—IDE选择和WebStorm性能优化、框架特性和数据调用、路由选项以及使用
- Java~时间戳小知识
- kettle使用笔记1--基本安装和使用
- pagehelper 使用
- BZOJ 3745
- Linux下的awk文本分析命令实例(二)
- python 实现 Fortran的读取10*0以及换行读问题
- Linux安全配置步骤简述
- JS代码排版工具
- python 发送邮件+多人+附件 最好用!!!
- 用 CSS 实现三角形与平行四边形
- JAVA JDBC 简单的增删改查
- Ubuntu 安装 Zabbix 3.2详细步骤
- dede:channel二级导航currentstyle属性失效问题
- install ros-indigo-map-msgs