这个问题可能有点幼稚,但我想知道是否可以在 C 代码中获取文件名的目录部分。例如,假设我有以下 Linux 文件:
/home/user/Documents/Work/report.txt
我想获得字符串“/home/user/Documents/Work/”
是否有任何 C 函数可以做这样的事情?此外,即使我以 Linux 文件为例,我也希望能够在任何操作系统上获取文件的目录列表。
先感谢您。
这个问题可能有点幼稚,但我想知道是否可以在 C 代码中获取文件名的目录部分。例如,假设我有以下 Linux 文件:
/home/user/Documents/Work/report.txt
我想获得字符串“/home/user/Documents/Work/”
是否有任何 C 函数可以做这样的事情?此外,即使我以 Linux 文件为例,我也希望能够在任何操作系统上获取文件的目录列表。
先感谢您。
使用strrchr()
和替换最后一个分隔符'\0'
#define PATH_SEPARATOR_CHAR '/'
char text[10000] = "/home/user/Documents/Work/report.txt";
char *last = strrchr(text, PATH_SEPARATOR_CHAR);
if (last) {
*last = 0;
printf("path is '%s'\n", text);
} else {
printf("Invalid text\n");
}
这是该dirname()
功能的用途:
char path[] = "/var/www/index.html";
char *dirn = dirname(path);
printf("Dirname: %s\n", dirn);