我使用opendir()
andreaddir()
来显示目录中的文件名。但他们是无序的。我怎样才能对它们进行排序?语言是C。
问问题
21588 次
3 回答
32
也许您可以使用 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);
}
}
于 2011-02-24T10:41:55.570 回答
8
在 C 中对某些内容进行排序的惯用方法是使用qsort()
函数。为此,最好安排将所有文件名收集到一个指针数组中,然后对数组进行排序。
这不是太难,但它确实需要一些动态数组管理,或者您对事物引入静态限制(文件名的最大长度,文件的最大数量)。
于 2011-02-24T12:37:58.767 回答
0
您必须动态构建包含文件名的数据结构并确保对其进行排序。
您可以使用名称构建一个数组或链表,然后对其进行排序,但我的偏好是通过插入二叉树来对插入的值进行排序。
于 2011-02-24T14:39:27.957 回答