0

ent が struct dirent* 型である C で readdir() を呼び出すときに、ent.d->name がファイルかディレクトリかをチェックする方法。

4

2 に答える 2

2

それが、 と一緒に使用する場合のS_ISREG()S_ISDIR()ですstat(2)。詳細については、man ページを参照してください。

POSIX に完全に準拠していなくても構わない場合は、 と を使用DT_REG()DT_DIR()て、ディレクトリ性と規則性をそれぞれチェックできます。これは、 のマニュアル ページに記載されていますreaddir(3)

于 2013-03-22T14:02:50.660 に答える
0

もう 1 つの方法は、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 に答える