无法区分文件夹

时间:2013-05-01 04:35:15

标签: stat

我试图使用stat()列出目录UROP中包含的所有文件。但是,该目录不仅包含文件,还包含我想要搜索的文件夹。因此,我使用递归来访问我想要列出其文件的文件夹。

但是,我的循环中的if条件无法区分文件和目录,所有文件都显示为目录;结果是无限递归代码如下。提前谢谢!

using namespace std;

bool analysis(const char dirn[],ofstream& outfile)
{
    cout<<"New analysis;"<<endl;
    struct stat s;
    struct dirent *drnt = NULL;
    DIR *dir=NULL;

    dir=opendir(dirn);
    while(drnt = readdir(dir)){
        stat(drnt->d_name,&s);
        if(s.st_mode&S_IFDIR){
            if(analysis(drnt->d_name,outfile))
            {
                cout<<"Entered directory;"<<endl;
            }
        }
        if(s.st_mode&S_IFREG){
            cout<<"entered condition;"<<endl;
            cout<<drnt->d_name<<endl;
        }

    }
    return 1;
}

1 个答案:

答案 0 :(得分:0)

而不是if(s.st_mode&S_IFDIR)if(s.st_mode&S_IFREG)
试试if (S_ISDIR(s.st_mode))if (S_ISREG(s.st_mode))