2
我想通過使用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;
}
在S_ISDIR宏出現之前,通常使用'if((s.st_mode&S_IFMT)== S_IFDIR)...'。 – 2013-05-01 23:16:17
是的,這也會起作用。 – Scott 2013-05-01 23:19:58