获取C代码中的文件目录

获取C代码中的文件目录,c,directory-structure,C,Directory Structure,这个问题可能有点幼稚,但我想知道是否有可能在C代码中获得文件名的目录部分。例如,假设我有以下Linux文件: /home/user/Documents/Work/report.txt 我想获得字符串“/home/user/Documents/Work/” 有没有C函数可以做这样的事情?此外,尽管我给出了一个Linux文件作为示例,但我希望能够获得任何操作系统上文件的目录列表 提前感谢。这就是该功能的用途: char path[] = "/var/www/index.html"; char *di

这个问题可能有点幼稚,但我想知道是否有可能在C代码中获得文件名的目录部分。例如,假设我有以下Linux文件:

/home/user/Documents/Work/report.txt

我想获得字符串“/home/user/Documents/Work/”

有没有C函数可以做这样的事情?此外,尽管我给出了一个Linux文件作为示例,但我希望能够获得任何操作系统上文件的目录列表

提前感谢。

这就是该功能的用途:

char path[] = "/var/www/index.html";
char *dirn = dirname(path);
printf("Dirname: %s\n", dirn);
使用
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");
}

看一下,strrchr()查找文件的基名比查找其目录更有用。如何使用它来查找目录?@Decave you NUL在
strrchr()返回的位置终止字符串。但实际上,请为任务使用正确的工具-
dirname()
。看我的答案。啊,我明白了。感谢你们两位。注意:
dirname()
(即使它做OP想要的事情)不是C标准所描述的。酷-不知道这个存在。非常感谢。@pmg我相信是POSIX,不过?@H2CO3:是的,POSIX在您提供的链接中描述了它。