2

を使用して、ディレクトリ UROP に含まれるすべてのファイルを一覧表示しようとしていますstat()。ただし、ディレクトリにはファイルだけでなく、検索したいフォルダーも含まれています。したがって、再帰を使用して、ファイルを一覧表示するフォルダーにアクセスしています。

ただし、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;
}
4

1 に答える 1

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))

于 2013-05-01T22:59:23.793 に答える