使用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)
当您调用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)