c 编程 - 来自 DIR* 结构的目录名

Phi*_*ber 3 c linux gcc dirent.h

dirent.h我们可以看到 DIR 结构是

struct DIR {
    struct dirent ent;
    struct _WDIR *wdirp;
};
Run Code Online (Sandbox Code Playgroud)

的dirent结构是

struct dirent {
    /* Always zero */
    long d_ino;

    /* File position within stream */
    long d_off;

    /* Structure size */
    unsigned short d_reclen;

    /* Length of name without \0 */
    size_t d_namlen;

    /* File type */
    int d_type;

    /* File name */
    char d_name[PATH_MAX+1];
};
Run Code Online (Sandbox Code Playgroud)

我的问题是:如果我们只有 DIR * struct -let say dir -并且从这个结构中我们想要提取目录名称,通常我们应该?- 做:

const char * dirname = dir->ent.d_name;
Run Code Online (Sandbox Code Playgroud)

但是这不能编译,错误是:

dereferencing pointer to incomplete type
Run Code Online (Sandbox Code Playgroud)

谢谢

dbu*_*ush 6

您不应该直接访问 a 的内容DIR

要遍历目录中的条目,您需要调用readdir,并将DIR *从 返回的a 传递给它opendir。这将返回一个dirent *,您可以从中读取目录条目的名称。

NULL读取所有条目后,该函数将返回。