linux c获取文件路径和文件名
linux提供了两个函数分别用来获取文件所在的目录和文件名:
char *dirname(char *path);
char *basename(char *path);
它们被包含在头文件libgen.h
中,dirname
取得的路径名不包含最后的/
,basename
取自于最后一个下划线后的内容。
以下是几个示例:
路径 | dirname | basename |
---|---|---|
/usr/lib | /usr | lib |
/usr/ | / | usr |
usr | . | usr |
. | . | . |
.. | . | .. |
通过这两个函数我们就可以写出属于我们自己的dirname和basename命令了:
#include <libgen.h>
#include <stdio.h>
int main(int argc, char **argv) {
if (argc < 2) {
printf("Usage: %s path ...\n", argv[0]);
return 0;
}
for (int i = 1; i < argc; i++) {
printf("%s\n", dirname(argv[i])); // basename直接替换这里的函数即可
}
return 0;
}
编译运行:
> gcc dirname.c -o dirname
> ./dirname /usr/local /data/
/usr
/data
实际上linux也内置了dirname
和basename
两个命令:
> basename /usr/lib/libDeployPkg.so.0
libDeployPkg.so.0
> dirname /usr/local/ /data
/usr
/
此处评论已关闭