Чтение и печать каталогов и подкаталогов в C ++ в Linux с сортировкой файла - PullRequest
0 голосов
/ 19 апреля 2020

Я делаю программу, которая печатает все dir и subdir с использованием библиотеки dirent.j, я подумал, что я использую рекурсивную функцию, которая делает то же самое для каждого нового пути, вот код:

void lisdir(const char *name, int indent)
  {
DIR *dstr=opendir(name);
struct dirent *dentry;

while ((dentry=readdir(dstr))!=NULL){

  if(dentry->d_type== DT_DIR){
        char path[1024];
        if (strcmp(dentry->d_name,".")==0 || strcmp(dentry->d_name,"..")==0)
            continue;
        snprintf(path, sizeof(path) ,"%s/%s", name, dentry->d_name);
        printf("%s\n", dentry->d_name);
        lisdir(path, indent+2);
        }else{
        printf("%s\n" , dentry->d_name);
        }
}
closedir(dstr);
  }



int main(void){
lisdir("/home/studente/homework", 0);
return 0;
}  

дело в том, что это работает, но это не так, как я хочу, потому что, как только он находит тип DIR, он начинает работать с рекурсией, игнорируя другие файлы внутри фактического каталога, и только в конце он печатает другие файлы (последний printf) , но я хочу сортировку, например: сначала каталог, а затем весь его файл, второй каталог, а затем все файлы ... e cc .., есть ли способ сделать это? спасибо!

...