0

如何在 C 中调用 readdir() 时检查 ent.d->name 是文件还是目录,其中 ent 的类型为 struct dirent*。

4

2 回答 2

2

这就是S_ISREG()与.S_ISDIR()一起使用时的用途和用途stat(2)。有关详细信息,请参见其手册页。

如果您可以忍受不完全符合 POSIX,您可以使用DT_REG()DT_DIR()分别检查目录性和规则性。这在readdir(3).

于 2013-03-22T14:02:50.660 回答
0

另一种方法是尝试在 d_name 上调用 opendir() 并查看它是否返回 null:

int isDir(struct dirent *ent)
{
    if (ent && strcmp(ent->d_name, ".") && strcmp(ent->d_name, "..")) // don't include pwd and parent dir
    {
        DIR *isDir = opendir(ent->d_name);
        if (isDir)
            return 1;
    }
    return 0;
}
于 2013-03-22T15:10:48.700 回答