如何按照Linux上的名称对某些目录中的文件进行sorting

我使用opendir()readdir()来显示目录中的文件名。 但他们是混乱的。 我如何分类呢? 语言是C.

在C中排序某些东西的习惯用法是使用qsort()函数。 为了达到这个目的,最好的方法是将所有文件名都收集到一个指针数组中,然后对数组进行排序。

这并不难,但是它需要一点动态数组管理,或者对事物(文件名的最大长度,最大文件数量)引入静态限制。

也许你可以使用scandir()而不是opendir和readdir?

 #include <stdio.h> #include <stdlib.h> #include <dirent.h> int main(void) { struct dirent **namelist; int n; n = scandir(".", &namelist, 0, alphasort); if (n < 0) perror("scandir"); else { while (n--) { printf("%s\n", namelist[n]->d_name); free(namelist[n]); } free(namelist); } } 

你必须动态地构造一个包含文件名的数据结构,并确保它被排序。

您可以使用名称构建一个数组或链接列表,然后对其进行排序,但是我的首选是通过插入二进制树来对插入值进行排序。