无法扫描目录,以便显示文件

问题描述 投票:-1回答:1

我正在尝试对可能包含子文件夹的文件夹执行DFS。目标是从目录中找到所有.txt文件。我需要按DFS查找它们的顺序查找.txt文件,并将文件的顺序保留在一个文件夹中。

当前,我用于扫描目录的代码使用scandir()功能:

int n = scandir(path, &namelist, NULL, alphasort);

这将按字母顺序对文件夹中的文件进行排序,这并不是我想要的。

编辑:我曾尝试使用opendir()和readdir(),但这是以看似随机的顺序访问文件的。

c linux scandir
1个回答
0
投票

根据versionsort man page

int versionsort(const void *a, const void *b);

可以作为回调传递给scandir(),并在dirent.h中声明。


首先要检查的是:“功能测试宏要求”

从上面链接的同一页面上:

glibc的功能测试宏要求(请参阅feature_test_macros(7)):

scandir()alphasort():_ BSD_SOURCE || _SVID_SOURCE

versionsort():_GNU_SOURCE。

这些宏需要在包含dirent.h之前定义,以启用特定功能。


第二项检查:glibc版本

从上面链接的同一页面上:

版本

versionsort()已添加到2.1版的glibc中。

请参考this question了解如何检查您的glibc版本。

© www.soinside.com 2019 - 2024. All rights reserved.