ディレクトリの下にあるすべてのファイル情報をトラバースすると、ディレクトリにサブディレクトリが含まれる場合があります。ディレクトリがまだ開いている場合は、このサブディレクトリを再度開く必要があります。したがって、これは再帰を使用する必要があります。実際、トラバースするレイヤーが複数あるため、多くのトラバーサルでは再帰を使用する必要があります。
int ReadDir(const char * strpathname){ while(1){ if((stdinfo = readdir(dir))== 0)break;
if(strncmp(stdinfo->d_name,".",1)==0) continue; //以.开始的文件不读,这是隐藏文件
if(stdinfo->d_type==8) //如果是文件,显示出来
printf("name=%s/%s\n",strpathname,stdinfo->d_name);
if(stdinfo->d_type==4)
{
sprintf(strchdpath,"%s/%s",strpathname,stdinfo->d_name);
ReadDir(strchdpath);
}
}
}
タイプ4は、このサブディレクトリのフルパスがトラバーサル関数に渡さなければならないディレクトリです。
int ReadDir(const char * strpathname)
{ ReadDir(strchdpath);これは再帰です}
再帰はトラバーサルクラスでよく使用されることを思い出してください。