使用c中的scandir()以升序打印目录

Lov*_*ode 4 c

使用scandir()它时,用于alphasort以相反的顺序对目录内容列表进行排序.现在如何scandir()在c中使用升序打印目录.

.并且..必须在最顶层.

这是代码:


#include<stdio.h>
#include <dirent.h>
#include<string.h>
#include<sys/dir.h>
#include<malloc.h>
int main(void)
{
   struct dirent **namelist;
   int n;

   n = scandir(".", &namelist,NULL,alphasort);
   if (n < 0)
      perror("scandir");
   else {
      while (n--) {
         printf("%s\n", namelist[n]->d_name);
         free(namelist[n]);
      }
      free(namelist);
   }
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

use*_*087 8

当您调用alphasort它时,将按升序对条目进行排序.

在您的代码中,您以相反的顺序打印它.

要按升序打印,您需要从索引开始0.


例如:

#include<stdio.h>
#include <dirent.h>
#include<string.h>
#include<sys/dir.h>
int main(void)
{
   struct dirent **namelist;
   int n;
   int i=0;
   n = scandir(".", &namelist,NULL,alphasort);
   if (n < 0)
      perror("scandir");
   else {
      while (i<n) {
         printf("%s\n", namelist[i]->d_name);
         free(namelist[i]);
         ++i;
      }
      free(namelist);
   }
 return 0;
}
Run Code Online (Sandbox Code Playgroud)