linux c获取文件路径和文件名
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
/
评论已关闭